簡體   English   中英

JQGrid客戶端排序

[英]JQGrid Client Side Sorting

我知道這里和互聯網上的其他地方都曾問過這個問題。 我已經嘗試了所有可以在StackOverflow網站上找到的解決方案,並且結果相同,但是沒有任何解決方案可以解決我的問題。

我想一次從數據庫中加載數據,然后在客戶端上執行所有排序操作。 這個loadonce屬性聽起來應該可以解決這個問題,但是它似乎對我不起作用。 我也嘗試過在各種事件處理程序中將數據類型設置為local,但沒有成功。

這是我用來實例化網格的代碼。

        $('#people_SelectedContacts').jqGrid({
        ajaxGridOptions:{
            type: "POST"
        },
        datatype: function(data){
            $.ajax(klg.getAppRoot()+"AJAX/GetMatterProfileContacts",{
                            data: JSON.stringify({
                MatterProfileID: $('#MatterProfileID').val()
            }),
            success: function(data){
                var contacts = data.ReturnValues;
                var mygrid = $("#people_SelectedContacts")[0];
                mygrid.addJSONData(contacts);
            },
            complete: function(){
                $("#people_SelectedContacts").setGridParam({datatype:'local'});
            }});
        },
        loadonce: true,
        colNames:['lecID','lrlID','mjID','Role','Name','Company/Court', 'Business Phone', 'Email', 'Docket #'],
        colModel:[
            {name:'LegalEntityContactID', hidden:true},
            {name:'LegalRoleLookupID', hidden:true},
            {name:'MatterJurisdictionID', hidden:true},
            {name:'LegalRoleLookupName', index:'legalrole'},
            {name:'FullName',index:'name'},
            {name:'Company',index:'company'},
            {name:'BusinessPhone',index:'bussphone'},
            {name:'Email',index:'email'},
            {name:'DocketNumber',index:'email'}
        ],
        sortable: true,
        jsonReader: {
            root:'MatterProfileContacts',
            repeatitems: false,
            id:"MatterProfileContactID"
        }
    });

數據已正確加載到網格中,但是正如我所說,排序命令全部通過並再次命中服務器。 誰能指出我正確的方向? 我從標准HTML表切換到JQGrid的唯一原因是為了進行排序和分組。 如果我無法進行客戶端排序,那就沒用了。

謝謝Stack Overflow社區。

問題的原因是您將datatype用作函數,而在99,9%的情況下則不需要。 問題在於,在loadonce: true情況下,設置datatype: 'local'不是jqGrid要做的唯一事情。 最重要的是, data_index參數將填充從服務器返回的數據。 內部參數保存數據,並將在本地排序和分頁期間使用。 您當前的實現不填充data_index ,因此loadonce: true無法正常工作。

除了使用datatype作為函數外,還可以使用

datatype: 'json',
serializeGridData: function (data) { return JSON.stringify(data); },
postData: { MatterProfileID: function () { return $('#MatterProfileID').val(); } }

您還應該修改jsonReader以在root包含ReturnValues 我認為更改之后,您將可以使用loadonce: true 可能還需要做一些其他的小事情,但是最重要的是應該使用任何標准datatype而不是datatype作為函數。

我將網格更改為使用數據類型:'json'(如Oleg所建議)。 我仍然有排序問題,但我意識到這是因為我在列模型中使用了index值。 列模型的index值必須與從服務器返回的JSON對象的屬性名稱匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM