我的 ASP.NET MVC 5 項目中有一個 Kendo Grid。其中一列是選擇列,如果它滿足特定條件,我將嘗試取消選擇復(fù)選框。我已設(shè)法取消選擇該復(fù)選框。問題是它只是更改 UI,但沒有刪除從 this.select()
中取消選擇的內(nèi)容。只需取消選中使條件 = true 的特定行并保留選中那些為 false 的行即可。
總之,如果條件= true,我想取消選中該框,將其從 this.select()
中刪除,從 this.selectedKeyNames()
中刪除,并從 this._selectIds()
中刪除它。不要從 UI 中的表中刪除該行。
下面的代碼不是我正在使用的實(shí)際代碼,而是與之類似的代碼。下面的代碼可能無法運(yùn)行。
function onChange(e) { var selectedRows = this.select(); for(var i = 0; i < selectedRows.length; i++){ selectedRows[i].find("input[type='checkbox']").prop('checked', false); if( 2 > 6) { alert("You can't select this"); } } }
似乎是 change
事件無法在事件處理程序中阻止,因此您可以添加 dataBound
事件處理程序并將單擊處理程序附加到選擇的復(fù)選框。如果滿足條件 - 停止事件的傳播:
dataBound: function(){ var grid = this; grid.tbody.find('tr .k-select-checkbox').on('click', function(e){ var dataItem = grid.dataItem($(this).closest("tr")); if(dataItem.Discontinued){ $(this).prop('checked', !$(this).prop('checked')); e.stopImmediatePropagation(); kendo.alert(`${dataItem.ProductName} is discontinued, you cannot select it!`) } }) }
在此示例中,您無法選擇停產(chǎn)商品。