FineUI 官方论坛

标题: 【已解决】F.Grid()的一些问题(DataSource更新时fields参数) [打印本页]

作者: fmfeggman    时间: 2017-11-19 09:12
标题: 【已解决】F.Grid()的一些问题(DataSource更新时fields参数)
1.F.Grid()中的绑定的数据不按照.DataField("column")指定的字段绑定而是由 DataSource(object dataSource, string[] fields, bool clearSelection = true)的string[] fields顺序绑定


                  比如 fields = {"name_1","phone_2","account_3"}
                    F.RenderField()
                       .DataField("name_1")
                    F.RenderField()
                        .DataField("account_3")
                    F.RenderField()
                        .DataField("phone_2")

这样grid就会出现错位,不知道这样算不算BUG

2.如果字段中包含关键字“password”则整个grid将不能显示


作者: sanshi    时间: 2017-11-20 09:35
DataSource(object dataSource, string[] fields, bool clearSelection = true)
====
这里面 fields 只是用来将 dataSource 数据源中数据进行排序,不会影响到之前定义列的顺序。列和fields的对应关系是在页面初始化时确定的。

如果还有问题,请基于空项目重现问题,发到客服邮箱:2877408506@qq.com
作者: sanshi    时间: 2017-11-24 14:09
我看了你的代码,属于同一个问题,可以通过FineUIMvc所推荐的方式来解决。

原理是这样的,MVC不会保持前后台的状态,所以回发时,必须要告诉后台客户端用到了哪些fields以及排列顺序,这个信息必须由前台告知,后台是不知道的。

  1. @{
  2.     var F = Html.F();
  3. }
  4. @section body {

  5.     @(F.Panel()
  6.         .ID("Panel7")
  7.         .Title("表格")
  8.         .ShowBorder(false)
  9.         .ShowHeader(false)
  10.         .Layout(LayoutType.VBox)
  11.         .BoxConfigAlign(BoxLayoutAlign.Stretch)
  12.         .IsViewPort(true)
  13.         .Items(
  14.             F.Form()
  15.                 .ID("Form5")
  16.                 .ShowBorder(false)
  17.                 .ShowHeader(false)
  18.                 .BodyPadding("20")
  19.                 .Rows(
  20.                     F.FormRow()
  21.                         .Items(
  22.                             F.Button()
  23.                                 .ID("QueryButton")
  24.                                 .Text("查  询")
  25.                                 .IconFont(IconFont.Search)
  26.                                 .Listener("click", "GridBindData")
  27.                         )
  28.                 ),
  29.             F.Grid()
  30.                 .EnableCollapse(true)
  31.                 .ShowHeader(false)
  32.                 .ShowBorder(false)
  33.                 .ID("GridView")
  34.                 .BoxFlex(1)
  35.                 .EnableCheckBoxSelect(false)
  36.                 .ShowSelectedCell(true)
  37.                 .AllowPaging(true)
  38.                 .IsDatabasePaging(true)
  39.                 .AllowSorting(true)
  40.                 .ForceFit(true)
  41.                 .Layout(LayoutType.VBox)
  42.                 .Columns(
  43.                     F.RowNumberField(),
  44.                     F.RenderField()
  45.                         .HeaderText("电话")
  46.                         .DataField("phone")
  47.                          .MinWidth(100),
  48.                     F.RenderField()
  49.                         .HeaderText("名称")
  50.                         .DataField("name")
  51.                         .MinWidth(90)
  52.                 )
  53.                 .PageItems(
  54.                     F.ToolbarSeparator(),
  55.                     F.ToolbarText()
  56.                         .Text("每页记录数:"),
  57.                     F.DropDownList()
  58.                         .ID("PageSize")
  59.                         .Width(80)
  60.                         .Items(
  61.                             F.ListItem()
  62.                                 .Text("20")
  63.                                 .Value("20"),
  64.                             F.ListItem()
  65.                                 .Text("50")
  66.                                 .Value("50"),
  67.                             F.ListItem()
  68.                                 .Text("100")
  69.                                 .Value("100")
  70.                        )
  71.               )
  72.         )
  73.     )
  74. }


  75. @section script {
  76.     <script>
  77.     var $contorl = "Issues";
  78.     var $delete_url = '@Url.Action("GridView_Delete")';
  79.     var $data_url = '@Url.Action("GridBindData1")';
  80.     function GridBindData(event) {
  81.         var grid = F.ui.GridView;
  82.         F.doPostBack($data_url, {
  83.             PageIndex: grid.pageIndex,
  84.             PageSize: F.ui.PageSize.getValue(),
  85.             SortField: grid.sortField,
  86.             SortDirection: grid.sortDirection,
  87.             fields: grid.fields
  88.         });
  89.     }
  90.     </script>
  91. }
复制代码

  1. [HttpPost]
  2. [ValidateAntiForgeryToken]
  3. public ActionResult GridBindData1(int pageIndex, int pageSize, string sortField, string sortDirection, JArray fields)
  4. {
  5.         var grid = UIHelper.Grid("GridView");
  6.         var table = new DataTable();
  7.         table.Columns.Add("name", typeof(string));
  8.         table.Columns.Add("phone", typeof(string));

  9.         var row = table.NewRow();
  10.         row["name"] = "名称";
  11.         row["phone"] = "电话";
  12.         table.Rows.Add(row);

  13.         //var fields = new List<string>();
  14.         //foreach (DataColumn column in table.Columns)
  15.         //{
  16.         //    fields.Add(column.ColumnName);
  17.         //}
  18.         grid.RecordCount(table.Rows.Count);
  19.         grid.DataSource(table, fields);
  20.         return UIHelper.Result();
  21. }
复制代码



作者: fmfeggman    时间: 2017-11-24 22:38
太谢谢了




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