2016-01-25 22 views
1

我一直在使用的jqGrid一会儿列标签,并且我只是想知道有什么区别使用colNames指定标签,如图jqGrid的指定使用colNames VS使用标签属性从colNames

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

之间或使用如下所示

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

回答

1

这两个声明没有区别。 colNames的用法稍微短一些,因为在列标题的每个文本之前都提供了相同的信息,但不包括文本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属性的信息。

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

一个额外的小评论,我必须包括更准确。如果指定colNameslabel,则jqGrid将colNames用于列标题,但label将用作the Searching Dialog(请参阅搜索对话框中的文本“Inv No”)中的标签。

+0

感谢Oleg的解释和格式良好的答案。 –

+0

@Amete:不客气! – Oleg

1

colNameslabel做同样的事情colModel的标签属性;在标题图层上分配列名称。

只能读到colNames的区别优先于label。如果两者都定义了colNames值显示为标题。

label充当colNames的备份。如果colNames选项未定义,则使用label选项属性指定列标题。

JSFiddlehttps://jsfiddle.net/tfkanxhv/指colNames和标签值。