0

我正在使用 Jqgrid 使用 asp.net 中的 Web 服务将我的数据显示到 jqgrid 中......但它仅在我在查询中给出限制时加载。如果我想在代码中使用第二个 commneted 查询加载所有数据然后它没有加载并给出错误“消息”:“使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了 maxJsonLength 属性上设置的值。”

这是我的整个模块架构...

index.aspx 页面...

<script type="text/javascript">
    $(function () {
        $("#table").jqGrid({
            datatype: function (pdata) { getData(pdata); },
            height: 500,
            colNames: ['username', 'ordinal', 'authcode', 'extension', 'trunk', 'dialnumber', 'dialdate', 'dialtime', 'duration', 'destination', 'price', 'toc'],
            colModel: [
                    { name: 'username', width: 100, sortable: true, align: 'center' },
                    { name: 'ordinal', width: 100, sortable: true, align: 'center' },
                    { name: 'authcode', width: 100, sortable: true },
                    { name: 'extension', width: 100, sortable: true, align: 'center' },
                    { name: 'trunk', width: 100, sortable: true, align: 'center' },
                    { name: 'dialnumber', width: 100, sortable: true, align: 'center' },
                    { name: 'dialdate', width: 100, sortable: true, align: 'center' },
                    { name: 'dialtime', width: 100, sortable: true, align: 'center' },
                    { name: 'duration', width: 100, sortable: true, align: 'center' },
                    { name: 'destination', width: 100, sortable: true, align: 'center' },
                    { name: 'price', width: 100, sortable: true, align: 'center' },
                    { name: 'toc', width: 100, sortable: true, align: 'center' }
                ],
            rowNum: 100,
            rowList: [100, 200, 300],
            pager: '#UsersGridPager',
            sortname: 'username',
            sortable: true,
            viewrecords: true,
            sortorder: 'asc',
            shrinkToFit: false,
            rownumbers: true,
            loadtext: 'Loading..'

        });
        jQuery("#table").jqGrid('navGrid', '#UsersGridPager', { add: false, edit: false, del: false, search: true, refresh: true });
    });


    function getData(pData) {
        $.ajax({
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            url: '<%= ResolveClientUrl("~/WebService.asmx/GetListOfPersons") %>',
            data: '{}',
            dataType: "json",
            success: function (data, textStatus) {
                if (textStatus == "success")
                    ReceivedClientData(JSON.parse(getMain(data)).rows);
            },
            error: function (data, textStatus) {
                alert('An error has occured retrieving data!');
            }
        });
    }


    function ReceivedClientData(data) {
        var thegrid = $("#table");
        thegrid.clearGridData();
        for (var i = 0; i < data.length; i++)
            thegrid.addRowData(i + 1, data[i]);
    }


    function getMain(dObj) {
        if (dObj.hasOwnProperty('d'))
            return dObj.d;
        else
            return dObj;
    }
</script>

JsonHelper.cs 文件

// Convert Object to Json String
// <param name="obj">The object to convert</param>
// <returns>Json representation of the Object in string</returns>

public static string ToJson(object obj)
{
    return Newtonsoft.Json.JsonConvert.SerializeObject(obj);
}

public static List<Person> GetPersons()
{
    List<Person> persons = new List<Person>();
    string connectionString = "Server=localhost;Port=3306;Database=projecttt;UID=root;Pwd=techsoft;pooling=false";

    MySqlConnection conn;
    conn = new MySqlConnection(connectionString);
    conn.Open();

    string s = "SELECT username,ordinal,authcode,extension,trunk,dialnumber,dialdate,dialtime,duration,destination,price,toc FROM processeddata_table order by username limit 0,200";
   // string s = "SELECT username,ordinal,authcode,extension,trunk,dialnumber,dialdate,dialtime,duration,destination,price,toc FROM processeddata_table ";
    MySqlCommand cmd = new MySqlCommand(s,conn);

    cmd.ExecuteNonQuery();

    using (MySqlDataReader dr = cmd.ExecuteReader())
    {

        while (dr.Read())
        {
            persons.Add(new Person()
            {
                username = Convert.ToString(dr["username"]),
                ordinal = Convert.ToString(dr["ordinal"]),
                authcode = Convert.ToString(dr["authcode"]),
                extension = Convert.ToString(dr["extension"]),
                trunk = Convert.ToString(dr["trunk"]),
                dialnumber = Convert.ToString(dr["dialnumber"]),
                dialdate = Convert.ToString(dr["dialdate"]),
                dialtime = Convert.ToString(dr["dialtime"]),
                duration = Convert.ToString(dr["duration"]),
                destination = Convert.ToString(dr["destination"]),
                price = Convert.ToString(dr["price"]),
                toc = Convert.ToString(dr["toc"])

            });
        }

    }

    return persons;
}

}

PagedList.cs 文件

IEnumerable _rows;
int _totalRecords;
int _pageIndex;
int _pageSize;
object _userData;

public PagedList(IEnumerable rows, int totalRecords, int pageIndex, int pageSize, object userData)
{
    _rows = rows;
    _totalRecords = totalRecords;
    _pageIndex = pageIndex;
    _pageSize = pageSize;
    _userData = userData;
}

public PagedList(IEnumerable rows, int totalRecords, int pageIndex, int pageSize)
    : this(rows, totalRecords, pageIndex, pageSize, null)
{
}

public int total { get { return (int)Math.Ceiling((decimal)_totalRecords / (decimal)_pageSize); } }

public int page { get { return _pageIndex; } }

public int records { get { return _totalRecords; } }

public IEnumerable rows { get { return _rows; } }

public object userData { get { return _userData; } }

public override string ToString()
{
    return Newtonsoft.Json.JsonConvert.SerializeObject(this);
}

}

网络服务.cs

[WebMethod]
[ScriptMethod]

public string GetListOfPersons()
{
    List<Person> persons = JsonHelper.GetPersons();
    return Newtonsoft.Json.JsonConvert.SerializeObject(new PagedList(persons, persons.Count, 1, persons.Count));
}

}

个人.cs

public string username { get; set; }
public string ordinal { get; set; }
public string authcode { get; set; }
public string extension { get; set; }
public string trunk { get; set; }
public string dialnumber { get; set; }
public string dialdate { get; set; }
public string dialtime { get; set; }
public string duration { get; set; }
public string destination { get; set; }
public string price { get; set; }
public string toc { get; set; }

请大家帮我.Thanx提前..

4

1 回答 1

0

你为什么使用ExecuteNonQuery()for select ?试试ExecuteReader()方法。

看到这个:-关于 MaxJsonLength 的问题

对于本地分页 loadonce: true 可以使用,但仍然会遇到与尝试加载过多数据时相同的错误,这是不建议的。此外,ajax 请求用于处理少量数据

于 2013-02-04T09:48:20.943 回答