2016-12-05 22 views
2

我想禁用一個數據錶行。在這種情況下,我看到兩個必需的步驟:如何限制數據錶行上的選擇?

  • 一套CSS
  • 防止選擇

我已經成功地做了相應Webix方法第一步:

function disableRow(table, row){ 
    table.addRowCss(row, "disabled-row") 
}; 

webix.ui({ 
    view:"datatable", 
    id:"mytest", 
    ... 
}); 

disableRow($$("mytest"), 2) 

http://webix.com/snippet/e47b4257

但我該如何限制這一行的選擇?謝謝

回答

1

我發現你正在尋找here

答案有沒有disabled屬性行,但你可以使用onBeforeSelect和onBeforeEditStart事件來防止特定行上的相關操作:

在上面的鏈接頁面上有鏈接到this的代碼片段,它可以完成你正在尋找的任務。

webix.ui({ 
    view:"datatable", autoConfig:true, editable:true, data:grid_data, 
     on:{ 
      onBeforeEditStart:function(id){ 
       if (id.row == 2) return false 
      }, 
      onBeforeSelect:function(id){ 
       if (id.row == 2) return false 
      } 
     } 
}); 
+0

哇,謝謝! –

+0

請將您的答案正文添加到此帖子中,如果鏈接的頁面被移動或放下,這沒有幫助。請參閱關於此主題的常見問題解答。 –

0

使用!important覆蓋表樣式:

<style> 
.disabled-row { 
    background-color: #ddd !important; 
    color: #aaa !important; 
} 
</style> 

http://webix.com/snippet/1a3569c6

+0

是的事件,但即使是現在該行還可以通過編程選擇:http://webix.com/snippet/21a310f5 –

1

看起來好像可能沒有內置的方式來禁用行。我也遇到this片段,這可能有助於

我已經試過之後編程選擇行,它不會讓你失望。

webix.ui({ 
    view:"datatable", id:"abc",autoConfig:true, editable:true, data:grid_data, 
    on:{ 
    onBeforeEditStart:function(id){ 
     if (id.row == 2) return false 
    }, 
    onBeforeSelect:function(id){ 
    if (id.row == 2) return false 
    } 
    } 
}); 

$$("abc").select(2); 
alert($$("abc").getSelectedId()) 
$$("abc").select(3); 
alert($$("abc").getSelectedId()) 
0

禁用由webix提供的任何功能,您可以覆蓋其事件和處理相同: 喜歡停止選擇在任何特定列,行或單元格可以覆蓋onBeforeSelect併爲特定行返回false /列/細胞。

有一切即onBeforeSelect,onAfterSelect,onBeforeEditStop, onAfterEditStop