JqG​​rid 使用 colNames 指定列标签与使用 colNames 中的标签 属性

JqGrid Specifying the Column Label using colNames vs using label property from colNames

我使用 jqGrid 有一段时间了,我只是想知道使用 colNames 指定 Label 有什么区别,如图所示

colNames:['Actions','Inv No'],
colModel [
    {name:'act',index:'act',width:55,align:'center'},
    {name:'inv',width:100,align:'left'}
]

或使用 colModel 的标签 属性,如下所示

colModel [
    {label:'Actions', name:'act',index:'act',width:55,align:'center'},
    {label:'Inv No', name:'inv',width:100,align:'left'}
]

colNameslabel 做同样的事情;在 header 层上分配列名称。

我唯一能读到的区别是 colNames 优先于 label。如果两者都已定义 colNames,则值显示为 header。

label 作为 colNames 的备份。如果未定义 colNames 选项,则使用 label 选项 属性 分配列 header。

JSFiddle https://jsfiddle.net/tfkanxhv/ 引用 colNames 和标签值。

两种声明没有区别。 colNames 的用法稍微短一些,因为它提供相同的信息,但不包括列 header 的每个文本之前的文本 label:。另一方面,包括 label: 和跳过 colNames 有一些小的实际优势。每个修改旧代码的人都犯了一个错误:有人删除(评论)了 colModel 中的一列,但有人忘记删除(评论)了 colNames 中的相应项目。

我发现了解如何使用 label 信息很重要。看看the code fragment:

if (p.colNames.length === 0) {
    for (iCol = 0; iCol < p.colModel.length; iCol++) {
        p.colNames[iCol] = p.colModel[iCol].label !== undefined ?
                p.colModel[iCol].label :
                p.colModel[iCol].name;
    }
}

可以看到jqGrid测试是否指定了colNames。如果 colNames 是空数组(它的默认值为 colNames),那么 colNames 数组将填充来自 labelname [=46] 的信息=].

就这些了。我个人认为使用 label 而不是 colNames 的代码更具可读性。

为了更准确,我必须添加一个额外的小评论。如果指定了 colNameslabel,那么 jqGrid 使用 colNames 作为列 header,但是 label将用作 the Searching Dialog 中的标签(请参阅搜索对话框中的文本 "Inv No")。