easyui datagrid 显示未知结构的数据

来源:互联网 发布:mysql分类汇总查询 编辑:程序博客网 时间:2024/05/29 11:35

控制器方法:

 public JsonResult SyncGetTmpData(int rows = 0, int page = 0)        {            try            {                string where = null;                string order = null;                if (Request.Form["where"] != null) where = Request.Form["where"];                if (Request.Form["order"] != null) order = Request.Form["order"];                string dbSetId = Request.Form["dbSetId"];                DataSet ds = new SyncImpl().GetTmpData(dbSetId, where, order, rows, page);                var result = new                {                    db = DAL.Common.DataGrid(ds),                    meta = DAL.Common.DataGrid(ds.Tables[2])                };                return Json(DAL.Common.Msg(AjaxStatu.ok, result));            }            catch (Exception e)            {                return Json(DAL.Common.Msg(AjaxStatu.err, e.Message));            }        }

这个控制器返回的数据格式为:

{"status":1,"data":{"db":{"total":3,"rows":[{"id":12,"provincename":"北京","rn":1},{"id":1,"provincename":"广东","rn":2},{"id":3,"provincename":"广西","rn":3}]},"meta":{"total":2,"rows":[{"fieldname":"id","isprimarykey":1,"name":"省份ID","remark":null,"isunique":0,"length":"4","datatype":2,"defaultvalue":null,"setid":"103e3041c7e64d47a08112e46b900045","id":"1b990e4a2e554404a4d5992aefddaed8","isindex":0,"isallownull":1,"ordernumber":0},{"fieldname":"provincename","isprimarykey":0,"name":"省份名称","remark":null,"isunique":0,"length":"20","datatype":1,"defaultvalue":null,"setid":"103e3041c7e64d47a08112e46b900045","id":"b3e9d0200879436a933b45e85176935c","isindex":0,"isallownull":1,"ordernumber":1}]}}}

其中:db为datagrid数据源格式,meta为表结构.

js 方法:

function getTmpData(dbSetId, r, p) {    var rows = 50;    var page = 1;    if (r) rows = r;    if (p) page = p;    $.post('/DataCenter/DBC/SyncGetTmpData', { dbSetId: dbSetId, rows: rows, page: page }, function (data) {        accecpResult(data, function () {            var ds = data.data.db.rows;            var meta = data.data.meta.rows;            if (ds.length < 0) {                myalert('未获取到数据');                return;            }            var columns = [[{field:'rn',title:'行号',align:'center'}]];            for (i = 0; i < meta.length; i++) {                columns[0][i+1] = { field: meta[i].fieldname.toLowerCase(), title: meta[i].name };            }            tab_sync_srcDb.datagrid({                data: data.data.db,                columns: columns,                striped: true,                fit: true,                border: false,                pagination: true,                pageSize: 50            });            var p = tab_sync_srcDb.datagrid('getPager');            (p).pagination({                pageNumber:page,                beforePageText: '第',                afterPageText: '页    共 {pages} 页',                displayMsg: '共{total}条数据',                onSelectPage: function (pageNumber, pageSize) {                    getTmpData(dbSetId, pageSize, pageNumber);                }            });        });    });}

jquery每次都是获取数据后再解析出数据,然后动态的创建列,分页控件也需要在事件中处理一下,datagrid不能加rownumbers属性,否则每页的行号都是从1开始的,只要加一个行号列,将数据源中的行号显示出来就行了。

0 0
原创粉丝点击