数据未在使用Web服务的Asp.net中的Jqgrid中显示

时间:2013-02-04 08:27:39

标签: asp.net jqgrid

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

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

index.aspx page ...

<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);
}

}

webservices.cs

[WebMethod]
[ScriptMethod]

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

}

Person.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; }

Plz伙伴们提前帮助我..THAN ..

1 个答案:

答案 0 :(得分:0)

为什么使用ExecuteNonQuery()进行选择?尝试ExecuteReader()方法。

请参阅: - Question on MaxJsonLength

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