Ext1.X的CheckboxSelectionModel預設全選之後不允許編輯的BUG解決方案

王磊的部落格發表於2015-02-15

Ext1.X的CheckboxSelectionModel預設全選之後不允許編輯的BUG解決方案,ext 的CheckboxSelectionModel在後臺預設選中之後,前臺就不允許編輯的bug是存在的,因為CheckboxSelectionModel沒有Disabled="true"的設定,只能想辦法彌補,畢竟不能直接給GridPanel設定Disabled="true"這樣的話,整個GridPanel都成灰色的了,顯然不能滿足使用者的需求,不科學的介面如圖:

 

那麼怎麼樣處理這個問題呢。

思路:選中之前進行判斷,假如為滑鼠點選不進行任何選中操作,但是如果後臺預設選中,第一次點選的時候不會觸發前臺js事件,這就成了一個問題,所有要想辦法,讓後臺資料設定完之後前臺在繫結一次全部預設。但問題有來了,經過測試,如果想要第一次觸發js攔截事件,必須前臺手動點選觸發才可生效(奇葩的Ext)。那就在GridPanel點選之前,去實現吧。程式碼如下(後臺設定開關按鈕還是沒有任何問題的):

function myBeforeRowSelect(SelectionModel, rowIndex, keepExisting, record) {
    if (event != null && event.keyCode == 0) {
        return false;
    }
}
function onSelectAll() {
    var model = Ext.getCmp("GridPanel1").getSelectionModel();
    model.selectAll();
}
<Listeners>
    <CellMouseDown Fn="onSelectAll"  />
</Listeners>

<SelectionModel>
  <ext:CheckboxSelectionModel ID="CheckboxSelectionModel1" runat="server" HideCheckAll="true">
       <Listeners>
            <BeforeRowSelect Fn="myBeforeRowSelect" />
       </Listeners>
  </ext:CheckboxSelectionModel>
</SelectionModel>

 

後臺設定CheckboxSelectionModel方法:

// 選中
RowSelectionModel sm = Grid.SelectionModel.Primary as RowSelectionModel;
sm.SelectedRows.Add(new SelectedRow(第幾行));
sm.UpdateSelection();


// 非選中
RowSelectionModel sm = Grid.SelectionModel.Primary as RowSelectionModel;
sm.DeselectRow(第幾行);

 

 

over~ 

 

相關文章