DevExpress學習筆記(七)-如何獲取Repository Item的值


DevExpress學習筆記

如何獲取Repository Item的值

    上一章我們看到了如何在TreeList的單元格中動態綁定不同的控件,此類控件被稱為In_Place Control。所謂“In_Place”,我的理解為“內置”控件,既然有“內”就相對的會有“外”,其實內和外最簡單的理解就是“內置”控件是綁定到如GridControl,TreeList等控件單元格上的控件,“外置”控件是直接拖到Form上的控件。

    如果單單只是放置的位置不同,其它沒有任何區別的話,就不會有這一章節了。以ComboBoxEdit為例,要獲取這個DropDownList控件的值,“外置”的方式相當方便,如下所示:

ComboBoxEdit combo1 = new ComboBoxEdit();

String val1 = Convert.ToString(combo1.EditValue);

    這么簡單的兩行代碼就可以獲取到相關控件的值了,但是要想把這代碼應用到“內置”的控件上,就費了力氣了,請看下面.

我先在TreeList的Designer中新增一個Repository Item,類型為ComboBoxEdit,

。將這個“內置”控件綁定至TreeList的某個單元格中,並響應其SelectedValueChanged的事件,發現居然找不到repositoryItemComboBoxLogic的EditValue屬性,如下圖所示:

 

    噢,找不到這個值的屬性如何能夠獲取到Repository Item的值啊?

    到DevExpress的官網上搜索了一下,發現這樣一個信息。原來,Repository Item不論綁定的什么控件,在確定其修改值之前(回車或者轉移焦點),“內置”控件的值是不會被綁定的單元格感知到的,因此無法直接通過EditValue這個屬性獲取到ComboBoxEdit控件選擇的值(實際上也根本沒有這個屬性)。如果想獲取到選擇的值,首先必須通過“內置”控件的“容器”控件(本處為TreeList)的ActiveEditor方法獲取其Active的Editor,在這個例子中就是ComboEdit,后面就是順利成章的事情了。

代碼如下:

        private void repositoryItemComboBoxLogic_SelectedValueChanged(object sender, EventArgs e)

        {

            BaseEdit logicEdit = treeList1.ActiveEditor;

            MessageBox.Show(Convert.ToString(logicEdit.EditValue));

        }

 

運行效果截圖如下:

 

 


免責聲明!

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



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