簡體   English   中英

如何導出所有應該只有可見列的jqgrid數據,而不管分頁

[英]how to export all jqgrid data which should have only visible columns irrespective of paging

我想知道是否有任何方法來獲取可見列的所有jqGrid數據而不管分頁。

$("#listTableSupply").jqGrid("getGridParam", "data");

但它顯示了我傳遞給jqgrid的所有json數據。 因為我在jqgrid中使用分頁,如果我使用

$('#list').jqGrid('getRowData');

我只得到第一頁的記錄。

我需要知道是否有任何方法我必須使用可見列獲取所有數據,而不管分頁。

getGridParamdata的使用是正確的方法。 如果需要從項目或數組中刪除某些屬性,則應該對數組進行深層復制(通過使用$.extend(true, {}, data) )並從數組的每個項目中刪除不需要的屬性。

或者,您可以在新數組中復制具有非隱藏列的所有屬性。 代碼可以是以下內容:

// get the reference to all parameters of the grid
var p = $("#listTableSupply").jqGrid("getGridParam");

// save the list of all non-hidden columns as properties of helper object
var colNames = {}, i, cm;
for (i = 0; i < p.colModel.length; i++) {
    cm = p.colModel[i];
    if (cm.hidden !== true) {
        colNames[cm.name] = true;
    }
}
// We have now colNames object with properties,
// which correspond to non-hidden columns of the grid

// Make copy of p.data including only non-hidden columns
var newData = new Array(p.data.length), prop, newItem, item;
for (i = 0; i < p.data.length; i++) {
    item = p.data[i];
    newItem = {};
    for (prop in item) {
        if (item.hasOwnProperty(prop) && colNames[prop]) {
            // fill only properties of non-hidden columns
            newItem[prop] = item[prop];
        }
    }
    newData[i] = newItem;
}

我沒有測試上面的代碼,但我希望它用你需要的數據填充newData數組。

更新:我為您創建了演示 ,演示了lastSelectedData而不是data的用法。 它在結果數組newData填充newData的過濾項,僅包括可見列。 您可以過濾數據,然后單擊“顯示已過濾和排序數據的非隱藏字段”按鈕。 該演示填充newData數組並顯示它。 我在click處理程序中使用了以下代碼:

var p = $grid.jqGrid("getGridParam"), filteredData = p.lastSelectedData,
    idName = p.localReader.id, i, cm, prop, newItem, item,
    colNames = {}, newData;
if (p.lastSelectedData.length > 0) {
    for (i = 0; i < p.colModel.length; i++) {
        cm = p.colModel[i];
        if (cm.hidden !== true && $.inArray(cm.name, ["rn", "cb", "subgrid"]) < 0) {
            colNames[cm.name] = true;
        }
    }
    colNames[idName] = true;
    newData = new Array(p.lastSelectedData.length);
    for (i = 0; i < p.lastSelectedData.length; i++) {
        item = p.lastSelectedData[i];
        newItem = {};
        for (prop in item) {
            if (item.hasOwnProperty(prop) && colNames[prop]) {
                // fill only properties of non-hidden columns
                newItem[prop] = item[prop];
            }
        }
        newData[i] = newItem;
    }
    alert(JSON.stringify(newData));
}

暫無
暫無

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

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