在某些情况下,需要让某些列不随水平滚动条滚动,比如当某个表格列比较多时,客户想观察第一列和最后一列的数据的对比,此时水平滚动条需要一会儿移动到最左边,看看第一列的数据,一会儿移动到最右边,看看最后一列的数据,而不能直观的一次性展示出数据对比。表格列锁定就是为了这些场景而存在。
在3.2版本中,列锁定功能由dataGrid的插件来完成。插件标签为<w:lockingViewPlug>,其需要锁定的列由 lockingColumns="name,address" 指定,字符串中是列的id,多列用","分隔。下面是一个例子
<w:dataGrid id="grid" showRowNumber="false" jsvar="gridJsvar" paged="true" rows="15" height="450" width="600">
<w:lockingViewPlug lockingColumns="name,address" />
<w:outputColumn id="id" hidden="true" hidable="false" />
<w:outputColumn id="name" width="150" align="center" sortable="true" header="公司" />
<w:outputColumn id="leadingProduct" header="主打产品" />
<w:outputColumn id="address" width="150" header="地址" wrap="true" />
<w:outputColumn id="phone" header="联系电话" wrap="true" />
<w:outputColumn id="homepage" width="250" header="公司主页" wrap="true" />
<w:pagingToolbar displayInfo="true" displayMsg="显示 {0} - {1},共 {2} 条" />
</w:dataGrid>
上面定义了一个普通表格,w:dataGrid有一个子标签<w:lockingViewPlug> 表明了该表格可以进行列锁定。lockingColumns="name,address" 表明该表格一出现时name和address这两列就是处于锁定状态。
LiteBean的内容主要用于填充数据,这里就不展示了,在官网bpdemos中可以找到相关代码。
通过表头菜单可以再定制哪些列进行锁定,哪些列进行非锁定。同时表头菜单的文字是可更换的,通过设置插件的“lockText”和“unLockText”属性达到目的。
下面是运行截图,

可以看到与以前的表格没有任何区别。列锁定使用很简单,目前仍没有保证与其他插件(比如表格融合,表格分组等等)的兼容,所以该插件最大的意义在于锁定展示。在官网示例 《列锁定表格》中可以找到详细代码。