這些天 我踩過的easyui的坑

坑1.分頁

使用$('#grid').datagrid({});中的url調用數據查詢處理的程序

前提條件:

a.  pagination: true

b . var p = grid.datagrid('getPager');
    $(p).pagination({
        pageSize: 10, //每頁顯示的記錄條數,默認爲10   
        pageList: [10, 15, 20, 30]//可以設置每頁記錄條數的列表   
    });

返回數據爲{"total":28,"rows":[ { } , { } ] }這種形式就可以產生分頁效果,在後臺處理程序中獲取page、rows參數,數據庫查詢語句採用分頁語句

獲取page,rows:

        var page = context.Request["page"];
        var rows = context.Request["rows"];
        page = (page == null ? "" : page);
        rows = (rows == null ? "" : rows);

        int p = int.Parse(page);
        int r = int.Parse(rows);


“坑”在:我的數據加載是基於查詢按鈕的,初始打開頁面是不加載數據的,輸入日期等條件點擊查詢按鈕,返回json數據用loadData加載,數據可以加載成功,但是後臺獲取不到page,rows參數。而上述過程是基於datagrid直接用url加載數據產生的分頁,由於分頁是直接作用於datagrid上,所以通過datagrid自身的url可以實現分頁並能獲取到分頁數據。

而我是外界給datagrid的數據,所以不會對其自身的分頁產生效果。

解決方法:查詢時仍然用datagrid的url ,而不用loadData去加載查詢出的json數據,並用queryParams傳遞查詢用到的參數

查詢按鈕調用的方法爲queryData,createParam是form表單中的數據

function queryData() {
        var param = createParam($("#dForm"));
        $('#grid').datagrid({
            url: "CheckData.ashx?action=query&id=day",
            queryParams: param
        });
 }

坑2:queryParams總是爲空

queryParams是object類型,雖然表現爲{ },類似於json,但是切不可用json字符串代替,若上述的方法中queryParams的數據param爲json字符串,那麼後臺將不能獲取。

function createParam(form) {
    var query = form.serializeArray();
    query = convertArray(query);
    //    return JSON.stringify(query);
    return query;
}

function convertArray(o) {
    var v = {};
    for (var i in o) {
        if (o[i].name != '__VIEWSTATE') {
            if (typeof (v[o[i].name]) == 'undefined')
                v[o[i].name] = o[i].value;
            else
                v[o[i].name] += "," + o[i].value;
        }
    }
    return v;
}

上述方法將表單數據序列化爲json,我調用createParam方法將表單數據封裝成json類型,處理後作爲queryParams參數傳送,可是傳到後臺總爲空,經多次測試,js的數據就是queryParams應該有的傳輸形式,後來注意到queryParams雖表現爲json形式,但實質上是object,於是我將JSON.stringify(query)註釋掉,返回的不再是json字符串,結果就對了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章