datagrid行編輯如何?級聯?,datagrid實現

來源:互聯網
上載者:User

datagrid行編輯如何?級聯?,datagrid實現

還是級聯的問題,不過這一次,是在datagrid裡,那麼難度上肯定比form中的級聯要高。

但是只要熟練掌握了datagrid的API,問題還是很容易就可以解決的。

關鍵點在於——editor,關於datagrid實現編輯功能全要靠它。


先實現行編輯

比如在datagrid中要實現某一列可編輯,那麼需要在那一列的column中配置editor屬性

editor的配置可以只指定type,也就是編輯框的類型,可以是combobox,datebox等easyUI配備的一些類型

若對這些編輯框有額外的屬性,需要在editor中再配置一個options的json,比如options:{data:[{1:'a'},{2:'b'}]}等

實現了行編輯,下面才能基於行編輯實現級聯。


實現航編輯級聯

這裡我們先來說一個具體的需求吧,比如編輯行中有一個接受和拒絕的下拉框,選了拒絕之後需要填寫拒絕理由,也就是說若選擇接受,拒絕理由那一列是不可編輯的。

怎麼做呢?思路還是和form中的級聯一樣,也就是在選中的(onSelect)事件中來控制,這個倒簡單,關鍵是如何來得到拒絕理由那一列並將其設定成不可編輯的?

還記得前面講的editor嗎?我們配置的editor是可以通過行索引(index)+ 欄位名(field)來得到的,試試吧

比如拒絕理由那一欄的field是reason,那麼我們根據編輯行索引editIndex和field就可以得到改單元格的editor了

var editor = $('#dg').datagrid('getEditor', {index:editIndex, field:'reason'})

之後可以通過editor.target來得到easyUI的組件,如combobox之類。然後再調用combobox.combobox('disable')就可以將那一列設定為不可編輯了。

之前我們form表單級聯舉的省市級聯的例子也可以用類似的思路來做,這裡就不贅述了。

做到這一步就結束了嗎?那麼我們只處理了選中事件中的級聯控制,那麼若是儲存之後再編輯呢?此時值已經存在於row中了,並不會觸發onSelect事件,那麼如何完善這些步驟呢?


需要完善的步驟

首先,每次“編輯開始”的時候都要檢查主combobox中的值是否為拒絕,若是,則將級聯項設定為可編輯,否則不可編輯

其中“編輯開始”包括append方法和onRowClick方法

其次,每次主combobox的onSelect事件時都要檢查選中的是否為拒絕,若是,則將級聯項設定為可編輯,否則不可編輯

這樣就完成datagrid行編輯的級聯。


題外話


其實若是不熟悉datagrid的API的話,想實現級聯那是太麻煩了。

我之前就是不知道有editor的API,然後就自己手動去擷取元素做級聯,

類似於這樣的語句:$("[field='isout']", $(".datagrid-body")).nextAll().find('.textbox input:first').attr("disabled", "disabled");

實在是麻煩且容易出錯



DEV控制項Grid中可以設定下拉列每行綁定不同資料來源? 就是想實現Grid中下拉框的級聯顯示

之前我有做過,但是最後失敗了。
發現下拉列的資料來源是綁定在列上的。
如果想讓每行綁定不同的資料來源,那隻能是選中某行更換資料來源了。
但是一旦更換資料來源,之前所選擇的資料就會發生變化。

最後我就在列頭附近另外弄了個下拉框。每當行變化時下拉框的資料來源也發生變化。從這個下拉框選擇資料,複製給當前行的這個需要下拉的列
因為這時候資料來源不是綁定在列上,所以選擇好的資料不會被改變。
 
怎在datagrid行編輯,combobox聯動時,改變後面combobox的編輯模式

你有具體代碼?我這個是當選第一個框,第二框聯動的,這個我實現啦,關鍵是我想實現同時可以當我選第一個框中其他值時,改變第二個框的編輯方式,用geteditors不好使啊 查看原帖>>
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.