基於DevExpress開發的GridView如何實現某一列的一行讓用戶可以從下列列表選擇選項


在很多DevExpress的使用例子里面,我們可以看到,基於GridView實現的不同控件展示的時候,每一列的控件類型都是一樣的,如果我要某一列的一行讓用戶可以從下列列表選擇選項,而其他行不可選擇,那我們可以實現這種效果嗎,應該如何實現?

1、GridView實現的顯示效果

例如下面的效果就是我希望達到的,在第一行的流程處理人列允許用戶選擇,其他行禁止用戶選擇。

單用戶單擊第一行的“流程處理人”列的時候,彈出一個列表供用戶選擇,選擇后顯示具體的人員的姓名即可。

2、功能實現具體步驟

實現上面所說的功能,最主要就是創建兩個In-place(嵌入)的編輯器,一個用於特定行的編輯,一個用於其他行的編輯。如下所示。

從上面可以看到,我添加了一個LookupEdit控件和一個TextEdit的控件,分別用來操作不同的行列內容。

然后就是需要實現gridView的單元格自定義編輯事件,如下所示。

            this.gridView1.CustomRowCellEdit += new DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventHandler(this.gridView1_CustomRowCellEdit);

然后在事件實現里面,對不同的行,指定不同的編輯器,如下代碼所示。

復制代碼
        private void gridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e) { if (e.Column.FieldName == "ProcUser") { if (e.RowHandle == 0) { e.RepositoryItem = this.repositoryddlProcUser; } else { e.RepositoryItem = this.repositorytxtProcUser; } } }
復制代碼

最后,還需要實現這兩個內嵌的編輯控件的ParseValue事件,如下所示。

            this.repositorytxtProcUser.ParseEditValue += new DevExpress.XtraEditors.Controls.ConvertEditValueEventHandler(repositorytxtProcUser_ParseEditValue); this.repositoryddlProcUser.ParseEditValue += new DevExpress.XtraEditors.Controls.ConvertEditValueEventHandler(repositoryProcUser_ParseEditValue);
復制代碼
        void repositorytxtProcUser_ParseEditValue(object sender, DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs e) { e.Value = "人員未定"; } void repositoryProcUser_ParseEditValue(object sender, DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs e) { if (e.Value is String) { int result = 0; if (Int32.TryParse((String)e.Value, out result)) { e.Value = result; e.Handled = true; } } }
復制代碼

這樣,我們就能實現上面所說的效果,可以在某行列里面顯示下拉列表,其他的行列顯示文本框,並且文本框不可以編輯的操作了。

通過以上的操作,我們還可以為某行列指定更多不同類型的內嵌編輯控件,從而豐富我們的列表單元格編輯操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM