|
我看了你的代码,属于同一个问题,可以通过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();
- }
复制代码
|
|