2015-04-02 68 views
1

我想要獲取jqwidgets網格中所有未選定行索引的列表。至於有一個預定義的方法來獲取所有選定行索引列表:如何獲取JqWidgets網格中所有未選定行索引的列表

var allSelectedVals=[]; 

var rowindexes = jQuery('#userProfiles').jqxGrid('getselectedrowindexes'); 

for (var i = 0; i < rowindexes.length; i++) 
{ 
    var data = jQuery('#userProfiles').jqxGrid('getrowdata', rowindexes[i]); 
    allSelectedVals.push(data.userId); 
} 

alert('allSelectedVals: ' + allSelectedVals); 

是否有獲得未選中的行索引也任何類似的方法嗎?

我將不勝感激所有的幫助。 預先感謝

回答

1

沒有內置方法用於此目的,所以我在這裏寫簡單的可能的功能是:我們得到總行數,並從選定項目移除所有的ID(所選項目是根據選擇計算的,而不是在調用此方法時計算的,因此不需要付出任何努力)。

這裏是方法:

function getUnselectedIndexes(selector) 
{ 
    var selectedIndexes = $(selector).jqxGrid('getselectedrowindexes'); 

    var meta = $(selector).jqxGrid('getdatainformation'); 
    var total = meta.rowscount; 

    var unSelectedIndexes = new Array(); 

    for (i = 0; i < total; i++) 
    { 
     if (selectedIndexes.indexOf(i) !== -1) 
     { 
      continue; 
     } 

     unSelectedIndexes.push(i); 
    } 

    console.log(unSelectedIndexes); 

    return unSelectedIndexies; 
} 

而且你可以通過調用這種方式獲得所有未選定的指標:

getUnselectedIndexes("#userProfiles"); 
+0

它的工作@喬治... – 2015-04-02 08:36:56

1

jQWidgets Grid返回所有行中的 「getboundrows」 方法 - 實施例:

var data = generatedata(5); 
var source = { 
    localdata: data, 
    datafields: [{ 
     name: 'firstname', 
     type: 'string' 
    }, { 
     name: 'lastname', 
     type: 'string' 
    }, { 
     name: 'productname', 
     type: 'string' 
    }, { 
     name: 'date', 
     type: 'date' 
    }, { 
     name: 'quantity', 
     type: 'number' 
    }, { 
     name: 'price', 
     type: 'number' 
    }], 
    datatype: "array" 
}; 

var adapter = new $.jqx.dataAdapter(source); 
$("#jqxgrid").jqxGrid({ 
    width: 600, 
    height: 100, 
    theme: 'energyblue', 
    source: adapter, 
    sortable: true, 
    selectionmode: 'singlecell', 
    columns: [{ 
     text: 'First Name', 
     datafield: 'firstname', 
     columngroup: 'Name', 
     width: 90 
    }, { 
     text: 'Last Name', 
     columngroup: 'Name', 
     datafield: 'lastname', 
     width: 90 
    }, { 
     text: 'Product', 
     datafield: 'productname', 
     width: 170 
    }, { 
     text: 'Order Date', 
     datafield: 'date', 
     width: 160, 
     cellsformat: 'dd-MMMM-yyyy' 
    }, { 
     text: 'Quantity', 
     datafield: 'quantity', 
     width: 80, 
     cellsalign: 'right' 
    }, { 
     text: 'Unit Price', 
     datafield: 'price', 
     cellsalign: 'right', 
     cellsformat: 'c2' 
    }] 
}); 

$("#jqxbutton").jqxButton({ 
    theme: 'energyblue', 
    width: 200, 
    height: 30 
}); 

$('#jqxbutton').click(function() { 
    var rows = $('#jqxgrid').jqxGrid('getboundrows'); 
    var result = ""; 
    for (var i = 0; i < rows.length; i++) { 
     var row = rows[i]; 
     result += row.firstname + " " + row.lastname + " " + row.productname + " " + row.date + " " + row.quantity + " " + row.price + "\n"; 
    } 
    alert(result); 
}); 

http://jsfiddle.net/jqwidgets/3LLVW/。通過選定行的索引,您可以遍歷行並檢查行的boundIndex是否在rowIndexes數組中。如果不是,則該行不被選中。

例子:http://jsfiddle.net/jqwidgets/yzqswcvr/

+0

是的,我可以實現我自己的邏輯去做的人(但它的成本我的表現)..我想問的是有什麼預先定義的方法來實現它......這可能會提高我的表現。順便說一句,謝謝你的建議 – 2015-04-02 07:55:13

+0

一個簡單的JavaScript for-loop不會太傷你的性能,但這是你的決定:) – scripto 2015-04-02 08:09:03

+0

雅是我會做的最後一個解決方案 – 2015-04-02 08:18:16

相關問題