2013-07-02 293 views
1

我有一個kendo-UI網格,其中,我使用了ClientRowTemplates。在每一行中,我都有一個複選框,當我從網格中選擇一行時,更改事件被激發(我已經實現了多行選擇)。我想選中該行時,我檢查該行的複選框,反之亦然,但是當我檢查第一行的複選框時正在選中,但是當我取消選中該複選框時行未被取消選擇。是否有任何建議..選擇取消選中kendo UI Grid的行與複選框

感謝你..

,我得到的所有答案都similer: 我知道改變CSS類就可以了,但如果用戶選擇多個(可以說20)行,其中他想取消選擇只有一行,在這種情況下,我給了他一個複選框,以便他可以取消選擇該行,在這種情況下,我必須防止更改事件,因爲當我要檢查複選框時,所有選定的行將取消選擇\\注意:如果用戶選擇行,將自動檢查行的複選框

讓我知道任何可以在更改電網事件之前觸發的checek盒事件

回答

1

謝謝大家誰照顧我的問題......你們建議我很多東西,幫助我非常多....但我創建了自己的解決方案,其中我把我的複選框中的div是類似的東西....

<div id='checkcontainerdiv' onmouseup='CheckMouseDown(event);'> 
    <input type='check' /> 
</div> 

然後在CheckMouseDown(事件)函數我寫道..

function CheckMouseDown(event) { 
    var CheckContainerDiv = $(event.target); 
    var gridrow = CheckContainerDiv.parents().filter("tr#gridrow"); 
    var IsSelected = gridrow.attr("aria-selected"); 
    if (IsSelected != null && IsSelected.trim().toLowerCase() == "true") { 
     //Now i removed gridrow from $("#MyEmailGrid").data("kendoGrid").select() collection 
    } 
    else { 
     //Now i added gridrow to $("#MyEmailGrid").data("kendoGrid").select() collection 
    } 
} 

現在你們都會想,我如何防止gridview的Change事件。爲此,我加了網格,這是這裏的DataBound事件...這裏

function GridDataBound() { 
    $('#MyGrid').data('kendoGrid').tbody.on('mousedown', 'div#checkcontainerdiv', function (e) { 
     e.stopImmediatePropagation(); 
    }); 
} 

e.stopImmediatePropagation將停止改變或網格的任何違約事件時,「格#checkcontainerdiv」的「鼠標按下」事件將發生

享受,如果有同樣的問題....一次 感謝..

0

試試這個:

$(rowToDeselect).removeClass("k-state-selected"); 

或者這樣:

How to unselect the grid record in kendoui

+0

是的,我知道它可以工作,但如果用戶選擇了多個(可以說20)行當中,他要取消選擇只有一行,在這種情況下,我給了他一個複選框,以便他可以取消選擇那個行,在這種情況下,我必須阻止更改事件\\\注意:複選框ro如果用戶選擇行,則w會自動檢查 –

+0

#chris請參閱我的問題中的編輯。 –

2

在複選框取消選中時,請取出k-state-selectedtr和屬性aria-selected="true"
只刪除類從tr可能導致衝突aria-selected屬性將用於該行 - 您可以使用瀏覽器開發人員檢查它醇。

$(rowToUnselect).removeAttr('aria-selected'); 
$(rowToUnselect).removeClass('k-state-selected'); 

更新:如果設置selectable: "multiple row"OR電網change網格和想改變行爲,你所希望的方式,然後將其刪除,並手動附加click事件每個tr

$('#grid tbody tr').on('click', function(){ 
    //select-deselect check-box 
    //accordingly, add/remove 'k-state-selected' 
    //add/remove attribute 'aria-selected' 
}); 
+0

#Pititosh請參閱我的問題編輯 –

+0

@PankajDubey:請參閱最新的答案 – Paritosh

0

你必須做手工時一個複選框未選中(或結合somewhow得到它自動完成) 我沒有看到他們的API的任何非選擇的方法,所以你可以嘗試一個醜陋的CSS方式。 只是這樣做的網格,從所選線

$('tr.k-state-selected','#grid').removeClass('k-state-selected') 
+0

#Antonis請參閱我的問題中的編輯。 –

+0

然後,只需將複選框的狀態與每行的k狀態選擇的類(以及必要時的詠歎調選定屬性)綁定即可。 因此,如果您不擔心任何事情,它就會更改另一個。 – AntouanK

0

該工作刪除選定的CSS類,當你複選框列是先在你grid.OnCheckbox點擊試試這個代碼。

ClientTemplate("<input type='checkbox' #=ID ? checked='checked':'' # class='chkbxchild margin_l30' onclick='SetCheckBOX(this)' />"); 


function SetCheckBOX(this) 
{ 
    if ($(this).is(':checked')) { 
      $(this).parent().parent().attr("class", "k-state-selected"); 
     } 
     else { 
      $(this).parent().parent().removeAttr("class", "k-state-selected"); 
     } 

}