easy ui datagrid 简单用法


 <table id="dg">
        </table>

一:加载数据的方式

       1:url方式

$(function () {

            $('#dg').datagrid({
                title: 'Sortable Column',
                width: 550,
                height: 250,
                url: 'datagridHandler.ashx',
                columns: [[
                    { field: 'username', title: 'username', width: 80 },
                    { field: 'password', title: 'password', width: 80 },
                    ]],
                pagination: true,
                sortName: 'itemid',
                sortOrder: 'asc'
            });
        });
datagridHandler.ashx为一般处理程序,直接返回字符串,注意格式(rows一定要是一个数组,只有一条数据也需要[]格式必须是一个数组),所以后台定义时放到一个list里边就对了

 public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            context.Response.Write("{\"rows\":[{\"username\":\"C++ Primer中文版(第4版)\",\"password\":4939}],\"total\":5}");
        }


从数据库读取在转化成json格式

public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            IDataBae idb = new SqlOperator("Data Source = .;Initial Catalog = BookWeb;User Id = sa;Password = 1234;");
            List<Users> u = idb.List<Users>("select * from Users", null);
            string sqls = u.ToJson();
            context.Response.Write(sqls);
        }


格式(直接是json数组没有total也可以显示):


     

       2:loadData方式            

$(function () {

            $('#dg').datagrid({
                title: 'Sortable Column',
                width: 550,
                height: 250,
                columns: [[
                    { field: 'username', title: 'username', width: 80 },
                    { field: 'password', title: 'password', width: 80 },
                    ]],
                pagination: true,
                sortName: 'itemid',
                sortOrder: 'asc'
            });


            var obj = { "rows": [{ "username": "aj", "password": 4939}], "total": 5 };
            $('#dg').datagrid('loadData',obj);
        });
      

      通过ajax后台请求数据绑定

       这里使用的是asp.net的ajax返回json他会自己加一个d所以要处理一下

 $(function () {
            $('#dg').datagrid({
                title: 'Sortable Column',
                width: 550,
                height: 250,
                columns: [[
                    { field: 'username', title: 'username', width: 80 },
                    { field: 'password', title: 'password', width: 80 },
                    ]],
                pagination: true,
                sortName: 'itemid',
                sortOrder: 'asc'
            });
            getdata();
        });
        function getdata() {
            $.ajax({
                type: "post",
                url: "MyEasyui.aspx/GetUsers",
                contentType: "application/json;charset=utf-8",
                dataType: "json",
                success: function (result) {
                    var dataObj = eval("(" + result.d + ")");
                    $('#dg').datagrid('loadData', dataObj);
                }
            });
         }
MyEasyui.aspx/GetUsers对应的方法

[WebMethod]
        public static string GetUsers() 
        {
            IDataBae idb = new SqlOperator("Data Source = .;Initial Catalog = BookWeb;User Id = sa;Password = 1234;");
            List<Users> u = idb.List<Users>("select * from Users", null);
            string sqls = u.ToJson();
            return sqls;
        }
效果与使用一般处理程序的数据库查询一样


注意:asp.net使用url方式为一般处理程序还行,但是使用asp.net的方法明明是返回的json字符串,response确是整个页面!!!!!!!

         只有用ajax请求后用loadData绑定数据


二:分页


   只要你指定了url且分页条属性设置为true,他就会在加载与点击分页菜单时请求后台并自动传递两个参数page与rows,当前页与一页显示的数量

    我们只需要利用这两个查询进行后台查询就可以了

    

   分页时我们需要传递一个total总条数给前台,格式就包装标准的datagrid需要的格式

$('#dg').datagrid({
               title: 'Sortable Column',
               pagination:true,
               fitColumns:false,
               fit: true,
               url:'datagridHandler.ashx',
               nowrap: true,
               sortName: 'bname',
               sortOrder:'desc',
               columns: [[
                    { field: 'bid', title: 'bid', width: 100 },
                    { field: 'bname', title: 'bname', width: 100,sortable:true },
                    { field: 'bauthor', title: 'bauthor', width: 100 },
                    {  field: 'bpublisher', title: 'bpublisher', width: 100 },
                    {  field: 'bpubtime', title: 'bpubtime', width: 100 },
                    {  field: 'btype', title: 'btype', width: 100 },
                    {  field: 'btypec', title: 'btypec', width: 100 },
                    { field: 'bdescribe', title: 'bdescribe', width: 200 }
                    ]]
           });
       atagridHandler.ashx

public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            int page = Convert.ToInt32(context.Request.Form["page"]);
            int rows = Convert.ToInt32(context.Request.Form["rows"]);

          
            IDataBae idb = new SqlOperator("Data Source = .;Initial Catalog = BookWeb;User Id = sa;Password = 1234;");
            List<book> u = idb.List<book>("select top " + rows + " * from book where bid not in (select top " +( rows * (page - 1)) + " bid from book )", null);

            DGDate<book> dtd = new DGDate<book>();
            dtd.total = idb.OneCol<int>("select count(*) as c from book","c",null);
            dtd.rows = u;
            context.Response.Write(dtd.ToJson());
        }
    /// <summary>
    /// 构建datagrid需要的json格式,
    /// 需要一个total与rows
    /// </summary>
    public class DGDate<T> 
    {
        public int total { get; set; }
        public List<T> rows { get; set; }
    }
      这种格式可以直接用匿名类实现更简洁一些 new { rows = list, total = Count }

     

如果没有使用url,在点击分页条时就不会自动请求后台,但是点击分页条时必然有一个回调函数,

     回调的参数就包涵了page与rows,只是如果指定url他就会在回调函数中去请求指定的后台,

     所以想用loadData方式就需要找到相应的回调函数,在回调函数中执行自己的请求然后在绑定数据 


二:排序

    1:remote远程排序

    首先指定排序的字段与方式

    sortName: 'bname',
    sortOrder:'desc',

    这样就会在请求url的时候多带两个参数

    

    然后回台只需要使用这两个参数进行相应的查询即可

    并且如果在相应的column指定了sortable:true

    如{ field: 'bname', title: 'bname', width: 100,sortable:true }

    点击相应列可以改变排序方式

    

    同样是点击他时会请求一个回台,更具参数查询即可

   2:remoteSort设置成false可以直接支持排序了





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值