在Jqgrid中,我想限制用戶隨時只選中一個複選框。當用戶選擇多個複選框時,只有最後選擇處於「選定」狀態,其餘應該自動取消選擇。jqgrid單選複選框
我已經將多選屬性設置爲true。但我無法做出取消選擇以前選擇的項目。如果有的話,可以這樣做嗎?
感謝
在Jqgrid中,我想限制用戶隨時只選中一個複選框。當用戶選擇多個複選框時,只有最後選擇處於「選定」狀態,其餘應該自動取消選擇。jqgrid單選複選框
我已經將多選屬性設置爲true。但我無法做出取消選擇以前選擇的項目。如果有的話,可以這樣做嗎?
感謝
您可以使用事件beforeSelectRow和復位選擇:
beforeSelectRow: function(rowid, e)
{
jQuery("#list47").jqGrid('resetSelection');
return(true);
}
我要給你一個fiddle,所以你可以檢查它是如何工作的。
具有設置在每列一個複選框意味着您可以點擊超過一次一個。你所要求的基本上是multiselect: false
的行爲,但與複選框列 - 你確定你真的想在這種情況下的複選框?
+1,好也使onSelectRow事件彈出知道,如果你在一排點擊多選不活躍,所以你仍然可以處理的選擇。 – Matthieu
我知道這個問題很舊,但我在這個Stack Post找到了更好的解決方案。
所有你需要做的是設置jqGrid的以下兩個屬性:
multiselect:true // multi-select checkboxes appear
multiboxonly:true // checkboxes act like radio buttons where only one is selected at a time
我已經更新由LeftyX作出的小提琴簡單地使用multiboxonly設置在這個JsFiddle
這是什麼我需要。它可能會幫助別人。
現在似乎不起作用,即使在你的小提琴中。 – JunM
你必須做一些更多的東西:
設置multiboxonly
到true
和multiselect
到true
2.定義事件onSelectRow
和beforeSelectRow
:
3.定義全球訴ariable:var lastSel
;
的OnSelectRow
和beforeSelectRow
實現:
onSelectRow: function (rowId, status, e) {
if (rowId == lastSel) {
$(this).jqGrid("resetSelection");
lastSel = undefined;
status = false;
} else {
lastSel = rowId;
}
},
beforeSelectRow: function (rowId, e) {
$(this).jqGrid("resetSelection");
return true;
}
感謝爲我工作..! – BlackHack123
你需要添加:var myGrid = $(「#list47」); $( 「#CB _」 + myGrid [0] .ID).hide();隱藏多選按鈕,如下所述:http://stackoverflow.com/questions/6212571/jqgrid-multiselect-check-all-in-header-how-to-hide-it/6213082#6213082 – Matthieu
此外它不會如果分組處於活動狀態(至少以此形式),則工作。 – Matthieu