FineUI 官方论坛

标题: 【已确认】Grid表头过滤的问题,column:Name===field:Name? [打印本页]

作者: Herry    时间: 2017-8-31 14:48
标题: 【已确认】Grid表头过滤的问题,column:Name===field:Name?
如下面过滤数据,column的值是Grid的栏位的ColumnID="Name",field的值默认是column一样,但是我现在设置Grid的ColumnID="f1",DataField="Name",这时过滤数据依旧是如下一样column=field,那么问题是我如何设置field的值?我希望是field=DataField或者任意设定,这是FineUI的bug吗?没有看到column!=field的例子,有人有同样的疑问吗?

http://fineui.com/demo_pro/#/demo_pro/grid/grid_filter_complex.aspx
  1. 过滤参数:
  2. [
  3.   {
  4.     "column": "Name",
  5.     "field": "Name",
  6.     "multi": true,
  7.     "matcher": "any",
  8.     "items": [
  9.       {
  10.         "operator": "contain",
  11.         "value": "111"
  12.       },
  13.       {
  14.         "operator": "contain",
  15.         "value": "222"
  16.       }
  17.     ]
  18.   }
  19. ]
复制代码

[attach]10470[/attach]

作者: Herry    时间: 2017-8-31 14:56
难道要都这样用?
[attach]10471[/attach]

作者: sanshi    时间: 2017-8-31 21:25
这个是WebForms的一个特殊的地方,注意这里过滤数据中的 field 其实是一个JS变量,不是服务器端控件GridColumn对应的DataField对象。

并且也并非每个GridColumn都有DataField对象,比如HyperLinkField,ImageField,LinkButtonField等就没有DataField对象。



==================
那么怎么在过滤数据中获取这个服务端定义的DataField对象呢?

下个版本(v3.7)代码已经冻结,不会新增功能。



下下个版本(v4.0),,我们会在过滤数据中加入类似 f_dataField, f_dataTextField 或者 f_dataImageUrlField 的属性(如果有的话),如下所示:
[attach]10472[/attach]






==================
为什么WebForms版的FineUI会出现这种情况?

归根结底是在FineUIPro中,表格的很多列类型都是服务器渲染的,比如BoundField,HyperLinkField,ImageField,CheckBoxField.....
因此即使两个列的DataField相同,但是生成到客户端的数据可能截然不同,比如:
<f:BoundField DataField="AtSchool" />
<f:CheckBoxField DataField="AtSchool" />
所以在JS中,这两个列的 field 属性就应该是不同,而不能是 AtSchool,因此我们用 columnId 来当做 field。


在FineUIMvc,只有一种列类型 RenderField,因此JS端的 field 属性就对应于 RenderField 的 DataField,而不会出现冲突。








作者: Herry    时间: 2017-8-31 23:30
非常感谢!




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4