easyui datagrid 显示未知结构的数据

控制器方法:

 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开始的,只要加一个行号列,将数据源中的行号显示出来就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值