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以及排列顺序,这个信息必须由前台告知,后台是不知道的。
@{
var F = Html.F();
}
@section body {
@(F.Panel()
.ID("Panel7")
.Title("表格")
.ShowBorder(false)
.ShowHeader(false)
.Layout(LayoutType.VBox)
.BoxConfigAlign(BoxLayoutAlign.Stretch)
.IsViewPort(true)
.Items(
F.Form()
.ID("Form5")
.ShowBorder(false)
.ShowHeader(false)
.BodyPadding("20")
.Rows(
F.FormRow()
.Items(
F.Button()
.ID("QueryButton")
.Text("查 询")
.IconFont(IconFont.Search)
.Listener("click", "GridBindData")
)
),
F.Grid()
.EnableCollapse(true)
.ShowHeader(false)
.ShowBorder(false)
.ID("GridView")
.BoxFlex(1)
.EnableCheckBoxSelect(false)
.ShowSelectedCell(true)
.AllowPaging(true)
.IsDatabasePaging(true)
.AllowSorting(true)
.ForceFit(true)
.Layout(LayoutType.VBox)
.Columns(
F.RowNumberField(),
F.RenderField()
.HeaderText("电话")
.DataField("phone")
.MinWidth(100),
F.RenderField()
.HeaderText("名称")
.DataField("name")
.MinWidth(90)
)
.PageItems(
F.ToolbarSeparator(),
F.ToolbarText()
.Text("每页记录数:"),
F.DropDownList()
.ID("PageSize")
.Width(80)
.Items(
F.ListItem()
.Text("20")
.Value("20"),
F.ListItem()
.Text("50")
.Value("50"),
F.ListItem()
.Text("100")
.Value("100")
)
)
)
)
}
@section script {
<script>
var $contorl = "Issues";
var $delete_url = '@Url.Action("GridView_Delete")';
var $data_url = '@Url.Action("GridBindData1")';
function GridBindData(event) {
var grid = F.ui.GridView;
F.doPostBack($data_url, {
PageIndex: grid.pageIndex,
PageSize: F.ui.PageSize.getValue(),
SortField: grid.sortField,
SortDirection: grid.sortDirection,
fields: grid.fields
});
}
</script>
}
复制代码
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult GridBindData1(int pageIndex, int pageSize, string sortField, string sortDirection, JArray fields)
{
var grid = UIHelper.Grid("GridView");
var table = new DataTable();
table.Columns.Add("name", typeof(string));
table.Columns.Add("phone", typeof(string));
var row = table.NewRow();
row["name"] = "名称";
row["phone"] = "电话";
table.Rows.Add(row);
//var fields = new List<string>();
//foreach (DataColumn column in table.Columns)
//{
// fields.Add(column.ColumnName);
//}
grid.RecordCount(table.Rows.Count);
grid.DataSource(table, fields);
return UIHelper.Result();
}
复制代码
作者:
fmfeggman
时间:
2017-11-24 22:38
太谢谢了
欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/)
Powered by Discuz! X3.4