【问题标题】:JQGrid does not display dataJQGrid 不显示数据
【发布时间】:2011-10-04 16:30:40
【问题描述】:

我已经为 JQgrid 和 ASP.net 创建了客户端和服务器端。显示网格但没有数据。我看不到结果。网格显示但没有数据。

服务器端 编码

  using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Web;
    using System.Web.Script.Serialization;

    namespace sample
    {
        public struct JQGridResults
        {
            public int page;
            public int total;
            public int records;
            public JQGridRow[] rows;

        }
        public struct JQGridRow
        {
            public int id;
            public string[] cell;
        }

        [Serializable]
        public class User
        {
            public int UserID
            { get; set; }

            public string UserName
            { get; set; }

            public string FirstName
            { get; set; }

            public string MiddleName
            { get; set; }

            public string LastName
            { get; set; }

            public string EmailID
            { get; set; }
            /// <summary>
            /// Summary description for jqgridhandler
            /// </summary>
            public class jqGridHandler : IHttpHandler
            {

                public void ProcessRequest(HttpContext context)
                {
                    HttpRequest request = context.Request;
                    HttpResponse response = context.Response;

                    string _search = request["_search"];
                    string numberOfRows = request["rows"];
                    string pageIndex = request["page"];
                    string sortColumnName = request["sidx"];
                    string sortOrderBy = request["sord"];


                    int totalRecords;
                    Collection<User> users = GetUsers(numberOfRows, pageIndex, sortColumnName, sortOrderBy, out totalRecords);
                    string output = BuildJQGridResults(users, Convert.ToInt32(numberOfRows), Convert.ToInt32(pageIndex), Convert.ToInt32(totalRecords));
                    response.Write(output);
                }

                private string BuildJQGridResults(Collection<User> users, int numberOfRows, int pageIndex, int totalRecords)
                {

                    JQGridResults result = new JQGridResults();
                    List<JQGridRow> rows = new List<JQGridRow>();
                    foreach (User user in users)
                    {
                        JQGridRow row = new JQGridRow();
                        row.id = user.UserID;
                        row.cell = new string[6];
                        row.cell[0] = user.UserID.ToString();
                        row.cell[1] = user.UserName;
                        row.cell[2] = user.FirstName;
                        row.cell[3] = user.MiddleName;
                        row.cell[4] = user.LastName;
                        row.cell[5] = user.EmailID;
                        rows.Add(row);
                    }
                    result.rows = rows.ToArray();
                    result.page = pageIndex;
                    result.total = totalRecords / numberOfRows;
                    result.records = totalRecords;
                    return new JavaScriptSerializer().Serialize(result);
                }

                private Collection<User> GetUsers(string numberOfRows, string pageIndex, string sortColumnName, string sortOrderBy, out int totalRecords)
                {
                    Collection<User> users = new Collection<User>();
                    string connectionString = "";

                    using (SqlConnection connection = new SqlConnection(connectionString))
                    {
                        using (SqlCommand command = new SqlCommand())
                        {
                            command.Connection = connection;
                            command.CommandText = "select * from tblusers" ; 
                            command.CommandType = CommandType.Text; // StoredProcedure;

                            SqlParameter paramPageIndex = new SqlParameter("@PageIndex", SqlDbType.Int);
                            paramPageIndex.Value = Convert.ToInt32(pageIndex);
                            command.Parameters.Add(paramPageIndex);

                            SqlParameter paramColumnName = new SqlParameter("@SortColumnName", SqlDbType.VarChar, 50);
                            paramColumnName.Value = sortColumnName;
                            command.Parameters.Add(paramColumnName);

                            SqlParameter paramSortorderBy = new SqlParameter("@SortOrderBy", SqlDbType.VarChar, 4);
                            paramSortorderBy.Value = sortOrderBy;
                            command.Parameters.Add(paramSortorderBy);

                            SqlParameter paramNumberOfRows = new SqlParameter("@NumberOfRows", SqlDbType.Int);
                            paramNumberOfRows.Value = Convert.ToInt32(numberOfRows);
                            command.Parameters.Add(paramNumberOfRows);

                            SqlParameter paramTotalRecords = new SqlParameter("@TotalRecords", SqlDbType.Int);
                            totalRecords = 0;
                            paramTotalRecords.Value = totalRecords;
                            paramTotalRecords.Direction = ParameterDirection.Output;
                            command.Parameters.Add(paramTotalRecords);


                            connection.Open();

                            using (SqlDataReader dataReader = command.ExecuteReader())
                            {
                                User user;
                                while (dataReader.Read())
                                {
                                    user = new User();
                                    user.UserID = (int)dataReader["UserID"];
                                    user.UserName = Convert.ToString(dataReader["UserName"]);
                                    user.FirstName = Convert.ToString(dataReader["FirstName"]);
                                    user.MiddleName = Convert.ToString(dataReader["MiddleName"]);
                                    user.LastName = Convert.ToString(dataReader["LastName"]);
                                    user.EmailID = Convert.ToString(dataReader["EmailID"]);
                                    users.Add(user);
                                }
                            }
                            totalRecords = (int)paramTotalRecords.Value;
                        }

                        return users;
                    }

                }
                public bool IsReusable
                {
                    // To enable pooling, return true here.
                    // This keeps the handler in memory.
                    get { return false; }
                }
            }
        }
    }

客户端

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="sample.aspx.cs" Inherits="sample.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<!-- The jQuery UI theme that will be used by the grid -->
    <link rel="stylesheet" type="text/css" media="screen" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.11/themes/redmond/jquery-ui.css" />
    <!-- The jQuery UI theme extension jqGrid needs -->
    <link rel="stylesheet" type="text/css" media="screen" href="themes/ui.jqgrid.css" />
    <!-- jQuery runtime minified -->
    <script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.5.2.min.js" type="text/javascript"></script>
    <!-- The localization file we need, English in this case -->
    <script src="js/trirand/i18n/grid.locale-en.js"type="text/javascript"></script>
    <!-- The jqGrid client-side javascript -->
    <script src="js/trirand/jquery.jqGrid.min.js" type="text/javascript"></script>

    <script type="text/javascript">
        $(function () {
            $("#UsersGrid").jqGrid({
                url: 'jqGridHandler.ashx',
                datatype: 'json',
                height: 250,
                colNames: ['UserID', 'UserName', 'FirstName', 'MiddleName', 'LastName', 'EmailID'],
                colModel: [
                        { name: 'UserID', index: 'UserID', width: 100, sortable: true },
                        { name: 'UserName', width: 100, sortable: true },
                        { name: 'FirstName', width: 100, sortable: true },
                        { name: 'MiddleName', width: 100, sortable: true },
                        { name: 'LastName', width: 100, sortable: true },
                        { name: 'EmailID', width: 150, sortable: true }
                    ],
                rowNum: 10,
                rowList: [10, 20, 30],
                pager: '#UsersGridPager',
                sortname: 'UserID',
                viewrecords: true,
                sortorder: 'asc',
                caption: 'JSON Example'
            });

            $("#UsersGrid").jqGrid('navGrid', '#UsersGridPager', { edit: false, add: false, del: false });
        });

    </script>
</head>
<body>
    <%--<form id="HtmlForm" runat="server">--%>
    <table id="UsersGrid" cellpadding="0" cellspacing="0"></table>
        <div id="UsersGridPager"></div>

   <%-- </form>--%>
</body>
</html>

它有什么问题?不显示数据。 谢谢

更新

$(document).ready(function () {
        $.ajax({
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            url: "jqGridHandler.ashx",
            datatype: 'json',
            success: function (result) {
                var JQResult = JSON.parse(result);

                colD = JQResult.colData;
                colN = JQResult.colNames;
                var colM = JQResult.colModel;

                alert(result.colModel);
                jQuery("#UsersGrid").jqGrid(
                                    {
                                        jsonReader: { repeatitems: false, cell: "", id: "0" },
                                        url: "jqGridHandler.ashx",
                                        datatype: 'json',
                                        mtype: 'POST',

                                        data: colD,
                                        ColNames: colN,
                                        ColModel: ColM,
                                        height: "auto",
                                        gridview: true,
                                        Pager: '#UsersGrid',
                                        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);
            }
        });

    });

为动态版本更新了版本

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.Script.Serialization;

namespace jqGridInWebForm {
    /// <summary>
    /// Summary description for jqGridHandler
    /// </summary>
    public struct JQGridResults {
        public int page;
        public int total;
        public int records;
        public JQGridRow[] rows;
    }
    public struct JQGridRow {
        public int id;
        public string[] cell;
    }
    public enum GridType
    {
        GRID_TYPE_TEXT,
        GRID_TYPE_DATE,
        GRID_TYPE_INT,
        GRID_TYPE_DOUBLE
    }

    [Serializable]
    public class User {
        public int UserID { get; set; }
        public string UserName { get; set; }
        public string FirstName { get; set; }
        public string MiddleName { get; set; }
        public string LastName { get; set; }
        public string EmailID { get; set; }
        public string Phone { get; set; }

    }

    public class clsGridData
    {
        public List<string> _Columns = new List<string>();
        public List<string[]> _Cells = new List<string[]>();

        public void InitFields(string P_SQL, string P_TYPE)
        { 
            int _count;
            string connectionString = "";//P_SQL
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand command = new SqlCommand())
                {
                    command.Connection = connection;
                    command.CommandText = "select * from tblusers";
                    command.CommandType = CommandType.Text; // StoredProcedure;
                    connection.Open();

                    using (SqlDataReader dataReader = command.ExecuteReader())
                    {
                        string MyField;
                        for (_count = 0; _count < dataReader.FieldCount; _count++)
                        {
                            MyField = dataReader.GetName(_count);
                            _Columns.Add(MyField);
                        }

                        while (dataReader.Read())
                        {
                            string[] MyCell = new string[dataReader.FieldCount];
                            for (_count = 0; _count < dataReader.FieldCount; _count++)
                            {
                                MyCell[_count] = Convert.ToString(dataReader[_count]);                                
                            }
                            _Cells.Add(MyCell);
                        }
                    }

                }


            }

        }
    }



    /// <summary>
        /// Summary description for jqgridhandler
        /// </summary>
        public class jqGridHandler: IHttpHandler 
        {



            public void ProcessRequest(HttpContext context) {
                HttpRequest request = context.Request;
                HttpResponse response = context.Response;


                string _search = request["_search"];
                string numberOfRows = request["rows"];
                string pageIndex = request["page"];
                string sortColumnName = request["sidx"];
                string sortOrderBy = request["sord"];

                //int totalRecords;
                //List<User> users = GetUsers(numberOfRows, pageIndex, sortColumnName, sortOrderBy, out totalRecords);
                clsGridData i_grid_data = new clsGridData();
                i_grid_data.InitFields("","");
                string output = BuildJQGridResults(i_grid_data, Convert.ToInt32(numberOfRows), Convert.ToInt32(pageIndex));
                //string output = BuildJQGridResults(users, Convert.ToInt32(numberOfRows), Convert.ToInt32(pageIndex), Convert.ToInt32(totalRecords));
                response.Write (output);
            }

            private string BuildJQGridResults(clsGridData P_GRID_DATA, int numberOfRows, int pageIndex)
            {

                JQGridResults result = new JQGridResults();
                List<JQGridRow> rows = new List<JQGridRow>();
                int _count;

                foreach (String[] Cells in P_GRID_DATA._Cells)
                {
                    JQGridRow row = new JQGridRow();
                    row.cell = new string[Cells.GetUpperBound(0)];
                    //row.id = user.UserID;
                    for (_count = 0;_count< Cells.GetUpperBound(0); _count++)
                    {                        
                        row.cell[_count] = Cells[_count].ToString();
                    }
                    rows.Add(row);
                }

                result.rows = rows.ToArray();
                result.page = pageIndex;
                result.total = (P_GRID_DATA._Cells.Count + numberOfRows - 1) / numberOfRows;
                result.records = P_GRID_DATA._Cells.Count;
                return new JavaScriptSerializer().Serialize(result);
            }
            //private string BuildJQGridResults(List<User> users, int numberOfRows, int pageIndex, int totalRecords) {

            //    JQGridResults result = new JQGridResults ();
            //    List<JQGridRow> rows = new List<JQGridRow> ();
            //    foreach (User user in users) 
            //    {
            //        JQGridRow row = new JQGridRow ();
            //        row.id = user.UserID;
            //        row.cell = new string[6];

            //        row.cell[0] = user.UserID.ToString ();
            //        row.cell[1] = user.UserName;
            //        row.cell[2] = user.FirstName;
            //        row.cell[3] = user.MiddleName;
            //        row.cell[4] = user.LastName;
            //        row.cell[5] = user.EmailID;
            //        row.cell[6] = user.Phone ;



            //        rows.Add (row);
            //    }
            //    result.rows = rows.ToArray ();
            //    result.page = pageIndex;
            //    result.total = (totalRecords + numberOfRows - 1) / numberOfRows;
            //    result.records = totalRecords;
            //    return new JavaScriptSerializer ().Serialize (result);
            //}




            private List<User> GetDummyUsers(string numberOfRows, string pageIndex, string sortColumnName, string sortOrderBy, out int totalRecords) 
            {
                var data = new List<User> 
                {
                    new User(){EmailID = "test@microsoft.com", FirstName = "John", LastName = "Araya", UserID = 1, UserName = "Efrem"}
                };
                totalRecords = data.Count;
                return data;
            }


        private List<User> GetUsers(string numberOfRows, string pageIndex, string sortColumnName, string sortOrderBy, out int totalRecords) 
        {
                List<User> users = new List<User> ();

                string connectionString = "";

                using (SqlConnection connection = new SqlConnection (connectionString)) 
                {
                    using (SqlCommand command = new SqlCommand ()) 
                    {
                        command.Connection = connection;
                        command.CommandText = "select * from tblusers";
                        command.CommandType = CommandType.Text; // StoredProcedure;

                        //SqlParameter paramPageIndex = new SqlParameter ("@PageIndex", SqlDbType.Int);
                        //paramPageIndex.Value = Convert.ToInt32 (pageIndex);
                        //command.Parameters.Add (paramPageIndex);

                        //SqlParameter paramColumnName = new SqlParameter ("@SortColumnName", SqlDbType.VarChar, 50);
                        //paramColumnName.Value = sortColumnName;
                        //command.Parameters.Add (paramColumnName);

                        //SqlParameter paramSortorderBy = new SqlParameter ("@SortOrderBy", SqlDbType.VarChar, 4);
                        //paramSortorderBy.Value = sortOrderBy;
                        //command.Parameters.Add (paramSortorderBy);

                        //SqlParameter paramNumberOfRows = new SqlParameter ("@NumberOfRows", SqlDbType.Int);
                        //paramNumberOfRows.Value = Convert.ToInt32 (numberOfRows);
                        //command.Parameters.Add (paramNumberOfRows);

                        //SqlParameter paramTotalRecords = new SqlParameter ("@TotalRecords", SqlDbType.Int);
                        //totalRecords = 0;
                        //paramTotalRecords.Value = totalRecords;
                        //paramTotalRecords.Direction = ParameterDirection.Output;
                        //command.Parameters.Add (paramTotalRecords);


                        connection.Open ();

                        using (SqlDataReader dataReader = command.ExecuteReader ()) 
                        {
                            User user;
                            while (dataReader.Read ()) 
                            {
                                user = new User ();
                                user.UserID = (int)dataReader["UserID"];
                                user.UserName = Convert.ToString (dataReader["UserName"]);
                                user.FirstName = Convert.ToString (dataReader["FirstName"]);
                                user.MiddleName = Convert.ToString (dataReader["MiddleName"]);
                                user.LastName = Convert.ToString (dataReader["LastName"]);
                                user.EmailID = Convert.ToString (dataReader["EmailID"]);
                                users.Add (user);
                            }
                        }
                        //totalRecords = (int)paramTotalRecords.Value;
                    }
                    totalRecords = 0;
                    return users;
                }

            }
            public bool IsReusable {
                // To enable pooling, return true here.
                // This keeps the handler in memory.
                get { return false; }
            }
    }


}

【问题讨论】:

    标签: asp.net jqgrid


    【解决方案1】:

    我已经修改了来源,现在记录显示很流畅,但唯一的问题是搜索不起作用,你能看看吗?我的代码如下:

    aspx页面:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="JQGrid.aspx.cs" Inherits="JQGrid" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title></title>
        <%--<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.8/themes/ui-darkness/jquery-ui.css" type="text/css" media="all" />--%>
    
        <link rel="stylesheet" type="text/css" media="screen" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.2/themes/redmond/jquery-ui.css" />
        <link href="jqScripts/css/ui.jqgrid.css" rel="stylesheet" type="text/css" />
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
        <script src="jqScripts/js/i18n/grid.locale-en.js" type="text/javascript"></script>
        <script src="jqScripts/js/jquery.jqGrid.min.js" type="text/javascript"></script>
    
        <script type="text/javascript">
            $(function () {
                $("#UsersGrid").jqGrid({
                    url: 'jqGridHandler.ashx',
                    datatype: 'json',
                    height: 250,
                    colNames: ['CustomerID', 'CompanyName', 'ContactName', 'ContactTitle', 'Address', 'City', 'PostalCode', 'Country'],
                    colModel: [
                            { name: 'CustomerID', index: 'CustomerID', width: 75, sortable: true },
                            { name: 'CompanyName', width: 100, sortable: true },
                            { name: 'ContactName', width: 100, sortable: true },
                            { name: 'ContactTitle', width: 100, sortable: true },
                            { name: 'Address', width: 100, sortable: true },
                            { name: 'City', width: 100, sortable: true },
                            { name: 'PostalCode', width: 100, sortable: true },
                            { name: 'Country', width: 150, sortable: true }
                        ],
                    rowNum: 10,
                    rowList: [10, 20, 30],
                    pager: '#UsersGridPager',
                    sortname: 'CustomerID',
                    viewrecords: true,
                    sortorder: 'asc',
                    caption: 'My Data'
                });
    
                $("#UsersGrid").jqGrid('navGrid', '#UsersGridPager', { edit: false, add: false, del: false });
            });
    
        </script>
    
    </head>
    <body>
        <form id="HtmlForm" runat="server">
        <table id="UsersGrid" cellpadding="0" cellspacing="0">
            <div id="UsersGridPager">
            </div>
        </table>
        </form>
    </body>
    </html>
    

    还有 ashx:

    <%@ WebHandler Language="C#" Class="jqGridHandler" %>
    
    using System;
    using System.Collections.Generic;
    
    using System.Collections.ObjectModel;
    
    using System.Data;
    
    using System.Data.SqlClient;
    
    using System.Web;
    
    using System.Web.Script.Serialization;
    
    public class jqGridHandler : IHttpHandler
    {
    
        public void ProcessRequest(HttpContext context)
        {
            HttpRequest request = context.Request;
            HttpResponse response = context.Response;
    
            string _search = request["_search"];
            string numberOfRows = request["rows"];
            //string numberOfRows = "10";
            string pageIndex= request["page"];
            string sortColumnName= request["sidx"];
            string sortOrderBy = request["sord"];
    
    
            int totalRecords;
            //public DataTable GetDataTable(string sidx, string sord, int page, int pageSize)
            Collection<User> users = GetUsers(numberOfRows, pageIndex, sortColumnName, sortOrderBy, out totalRecords, _search);
            string output = BuildJQGridResults(users, Convert.ToInt32(numberOfRows), Convert.ToInt32(pageIndex), Convert.ToInt32(totalRecords));
            response.Write(output);
        }
    
        private string BuildJQGridResults(Collection<User> users,int numberOfRows, int pageIndex,int totalRecords)
        {
    
            JQGridResults result = new JQGridResults();
            List<JQGridRow> rows = new List<JQGridRow>();
            foreach (User user in users)
            {
                JQGridRow row = new JQGridRow();
                row.id = user.CustomerID;
                row.cell = new string[8];
                row.cell[0] = user.CustomerID;
                row.cell[1] = user.CompanyName;
                row.cell[2] = user.ContactName;
                row.cell[3] = user.ContactTitle;
                row.cell[4] = user.Address;
                row.cell[5] = user.City;
                row.cell[6] = user.PostalCode;
                row.cell[7] = user.Country;
    
                rows.Add(row);
            }
            result.rows = rows.ToArray();
            result.page = pageIndex;
            result.total = totalRecords / numberOfRows;
            result.records = totalRecords;
            return new JavaScriptSerializer().Serialize(result);
        }
    
        private Collection<User> GetUsers(string numberOfRows, string pageIndex, string sortColumnName, string sortOrderBy, out int totalRecords, string _search)
        {
            Collection<User> users = new Collection<User>();
            string connectionString = "Data Source=ritetechno\\sqlexpress;Initial Catalog=Northwind;Integrated Security=True";
            //<add name="constr" connectionString="Data Source=Abdul-THINK;Initial Catalog=Northwind;Integrated Security=True" providerName="System.Data.SqlClient"/>
    
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand command = new SqlCommand())
                {
                    int numRows=Convert.ToInt32(numberOfRows)*(Convert.ToInt32(pageIndex));
                    int excluderows=Convert.ToInt32(numberOfRows)*((Convert.ToInt32(pageIndex)-1));
                    command.Connection = connection;
                    command.CommandText = "SELECT TOP " + numRows + " CustomerID, CompanyName, ContactName, ContactTitle, Address, City, PostalCode, Country FROM Customers WHERE CustomerID NOT IN (SELECT TOP " + excluderows +" CustomerID FROM Customers)";
                    command.CommandType = CommandType.Text;
                    connection.Open();
    
                    using (SqlDataReader dataReader = command.ExecuteReader())
                    {
                        User user;
                        while (dataReader.Read())
                        {
                            user = new User();
                            user.CustomerID = Convert.ToString(dataReader["CustomerID"]);
                            user.CompanyName = Convert.ToString(dataReader["CompanyName"]);
                            user.ContactName = Convert.ToString(dataReader["ContactName"]);
                            user.ContactTitle = Convert.ToString(dataReader["ContactTitle"]);
                            user.Address = Convert.ToString(dataReader["Address"]);
                            user.City = Convert.ToString(dataReader["City"]);
                            user.PostalCode = Convert.ToString(dataReader["PostalCode"]);
                            user.Country = Convert.ToString(dataReader["Country"]);
                            users.Add(user);                        
                        } 
                    }
                    string cmdTotRec = "SELECT COUNT(*) FROM Customers";
                    SqlCommand chkTotRec = new SqlCommand(cmdTotRec, connection);
                    totalRecords = Convert.ToInt32(chkTotRec.ExecuteScalar().ToString());
                    connection.Close();
                }
    
                return users;
            }
    
        }
        public bool IsReusable
        {
            // To enable pooling, return true here.
            // This keeps the handler in memory.
            get { return false; }
        }
    
        public struct JQGridResults
        {
            public int page;
            public int total;
            public int records;
            public JQGridRow[] rows;
    
        }
        public struct JQGridRow
        {
            public string id;
            public string[] cell;
        }
    
        [Serializable]
        public class User
        {
            public string CustomerID { get; set; }
            public string CompanyName { get; set; }
            public string ContactName { get; set; }
            public string ContactTitle { get; set; }
            public string Address { get; set; }
            public string City { get; set; }
            public string PostalCode { get; set; }
            public string Country { get; set; }
        }
    }
    

    【讨论】:

      【解决方案2】:

      您的主要错误是您定义了 jqGridHandler (public class jqGridHandler : IHttpHandler) 类inside of User 类。您应该在顶层定义它。

      我不评论 GetUsers 的代码,例如包括 string connectionString = ""。您应该知道如何访问您的数据库。

      另一个小错误是行

      result.total = totalRecords / numberOfRows;
      

      应该固定到

       result.total = (totalRecords + numberOfRows - 1) / numberOfRows;
      

      这不是那么重要,但我更喜欢使用List&lt;User&gt; 而不是Collection&lt;User&gt;

      修改后代码就可以运行了(你可以从here我使用的demo project下载)。我建议您另外实现loadError 事件句柄。以the answer 为例。

      【讨论】:

      • 非常感谢。当我尝试修改后的版本时,它没有显示数据。我尝试将文件的内容复制到我的原始文件中,然后结果相同。没有数据。我从下载中尝试了该软件包。它运作良好。但是有一个区别,我的应用程序中没有 CSS 和 j。我的案例 。这有什么区别???
      • @Efrem:您是否尝试在代码中包含GetDummyUsers 而不是GetUsers?您是否尝试包含任何loadError?尝试至少使用loadError: function(jqXHR, textStatus, errorThrown) { alert(jqXHR.responseText); alert(textStatus); alert(errorThrown); }。关于您对codeBase 的问题:我无法回答,因为我不知道项目中的所有文件。我建议您逐步将我的工作演示修改为您的。然后一步你会发现你所做的错误。
      • 非常感谢您的及时回复。正如您所说,我将您的演示版本修改为我的项目。现在,当我尝试连接到数据库时,它给了我一个错误 totalRecords =(int)paramTotalRecords.Value;它给了我一个错误,具体演员表无效。我改为 totalRecords = Convert.ToInt32(paramTotalRecords.Value);行,则错误是 Object cannot be cast from DBNull to other type。是什么原因??谢谢楼主
      • @Efrem:我不太了解您的数据库相关代码。您不会发布 tblusers 表的定义。我在您的command.CommandText 中看不到任何参数。只是"select * from tblusers"。我认为在命令中添加许多 Parameters 是没有意义的。如果我添加参数,我会添加 always 类型和参数的长度。我使用 从不 "select * from ..."。我使用命名列:select UserID, UserName, ...。在dataReader.Read() 循环中,我永远不会使用Convert.ToString 并使用GetInt32GetString 等等。在我看来,代码太脏了,无法工作。
      • 非常感谢。你是绝对正确的。我从存储过程中修改了 sql 语句。如果我更改 command.commandtext= SPname 和 Command.commandType= commandType.StoredProcedure,那么它将作为参数问题起作用。感谢您向我指出这个问题。下一步是我想动态拉取列名以显示在网格上。我计划的过程是使用给定的表动态创建一个类和属性,并使用 datareader 读取数据。实施此类问题的最佳方法是什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多