使用JSOn和asp.net实现jqgrid



上次我问了类似的问题。现在我试着把jqgrid组合起来工作。然而,我试着把网格,但数据没有加载。

是这两个文件GetData.aspx

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Script.Serialization"%>
<%@ Import Namespace="System.Collections.ObjectModel"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(GetData());
        Response.End();
        //Response.Write ("Data is being loaded");
    }
    protected string GetData()
    {
                 var list = new Collection<People>
                              {
                                  new People {Id = 1, Name = "John", Gender = 1, IsClosed = false},
                                  new People {Id = 2, Name = "Abel", Gender = 1, IsClosed = false},
                                  new People {Id = 3, Name = "Aaron", Gender = 1, IsClosed = true},
                                  new People {Id = 4, Name = "Tsion", Gender = 2, IsClosed = true},
                                  new People {Id = 5, Name = "Mussie", Gender = 2, IsClosed = true}
                              };
                   return GridData(1, 1, list.Count, list);
    }
    public string GridData(int noOfPages, int startPage, int noOfRecords, Collection<People> list)
    {
        var gridData = new
                           {
                               total = noOfPages,
                               page = startPage,
                               records = noOfRecords,
                               rows = list,
                           };
        var jsonSerializer = new JavaScriptSerializer();
        return jsonSerializer.Serialize(gridData);
    }

    public class People
    {
        public People()
        {
            Name = string.Empty;
            Id = 0;
            Gender = 0;
            IsClosed = false;
        }

        public string Name { get; set; }
        public int Id { get; set; }
        public int Gender { get; set; }
        public bool IsClosed { get; set; }
    }
    public enum Oper
    {
        edit=1,
        del=2,
        add=3
    }

</script>
</html>

JQExample.aspx

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head id="Head1" runat="server">
    <title>JqGrid</title>
    <link href="themes/redmond/jquery-ui-1.8.2.custom.css" rel="stylesheet" type="text/css" />
    <link href="themes/ui.jqgrid.css" rel="stylesheet" type="text/css" />    
    <script src="Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery.jqGrid.js" type="text/javascript"></script>
</head>
<body>
   <%-- <form id="form1">--%>
    <table id="jsonmap">
    </table>
    <div id="pjmap">
    </div>

    <script type="text/javascript">
        jQuery("#jsonmap").jqGrid({
            url: 'GetData.aspx',
            datatype: 'json',
            colNames: ['ID', 'Name','Active','Gender'],
            colModel: [{
                    name: 'id',
                    index: 'id',
                    width: 35,
                    editable: false,
                    editoptions: {
                    readonly: true,
                    size: 10
                }},                
                {
                    name: 'name',
                    index: 'name',
                    width: 150,
                    align: "left",
                    editable: true,
                    size: 100
                  },
                {
                    name: 'isClosed',
                    index: 'isClosed',
                    width: 100,
                    align: 'left',
                    editable: true,
                    edittype: "checkbox",
                    editoptions: {
                    value: "true:false",
                    formatter: "checkbox"
                }},
                {
                    name: 'gender',
                    index: 'gender',
                    width: 100,
                    formatter:'select',
                    editable: true,
                    edittype: "select", 
                    editoptions: {value: "0:select;1:male;2:female"}
                }],
                rowNum: 10,
                rowList: [2, 5, 10, 15],
                pager: '#pjmap',
                sortname: 'id',
                sortorder: "desc",
                viewrecords: true, 
                jsonReader: {
                    repeatitems: false
                },
                width: 600,
                caption: 'First jqGrid',
                height: '100%',
                editurl: 'GetData.aspx'
            });

            jQuery("#jsonmap").navGrid("#pjmap", {
                    edit: true,
                    add: true,
                    del: true
                },
                {
                    closeAfterEdit: true,
                    reloadAfterSubmit: false
                },
                {
                    closeAfterAdd: true,
                    reloadAfterSubmit: false
                },
                {
                    reloadAfterSubmit: false
                });

    </script>
      <table id="Jqgrid" width="100%">
    </table>
    <div id="pager"></div> 
    </form>
</body>
</html>

现在我想使用ADO.net更改数据以动态显示。

谢谢你,先生,它现在起作用了。

我想改变以动态获取数据,这是改变数据源在GetData。并在JQExample中格式化colNames和ColModel。aspx文件:

 $(document).ready(function () {
           $.ajax({
                            type: 'POST',
                            contentType: "application/json; charset=utf-8",
                           //url: "GetData.aspx", 
                            datatype: 'json',
                            success: function (result) {
//                                colD = result.colData;
//                                colN = result.colNames;
                                var colM = result.colModel;
                                 //alert(result.colModel);
                                jQuery("#jsonmap").jqGrid
                                      (
                                        {
                                      jsonReader: { repeatitems: false, cell: "",id: "0" },
                                            //url: "GetData.aspx", 
                                            datatype: 'json',
                                            mtype: 'POST',
                                            colModel: colM,
                                            data: colD.rootVar,
                                            ColNames: colN,
                                            ColModel: ColM,
                                            height: "auto",
                                            gridview: true,
                                            pager: '#pager',
                                            rowNum: 5,
                                            rowList: [5, 10, 20, 50],
                                            viewrecords: true,
                                            loadComplete: function (data) {
                                                alert('loaded completely'); 
                                             },
                                            loadError: function () {
                                                alert('error'); 
                                             }
                                        });
                            },
                            error: function (x, e) {
                                alert(x.readyState + ' ' + x.status + e.msg);
                            }
                        });

以下代码应替换为ADO。GetData.aspx

var list = new Collection<People>
                              {
                     new People {Id = 1, Name = "John", Gender = 1, IsClosed = false},
                     new People {Id = 2, Name = "Abel", Gender = 1, IsClosed = false},
                     new People {Id = 3, Name = "Aaron", Gender = 1, IsClosed = true},
                     new People {Id = 4, Name = "Tsion", Gender = 2, IsClosed = true},
                     new People {Id = 5, Name = "Mussie", Gender = 2, IsClosed = true}
                              }; 
你能告诉我下一步该怎么做吗?我有服务器端数据源(SQL服务器)。因此,我应该写一个选择语句来获得记录,页面和顺序(排序)特征的总数显示在网格中吗?如果是这样,请给样品代码有顶,限制和订单?

在上述代码中是否缺少动态获取数据?

您的实现有几件事是错误的,特别是如果您希望它是可编辑的,但只是为了加载您需要修复列映射的数据。它们不匹配。此外,我认为它是区分大小写的,所以你需要将colNames更改为下面并更新colModel以匹配这些名称/大小写:

colNames: ['Id', 'Name','IsClosed','Gender']

最新更新