簡體   English   中英

使用就地編輯器設置XtraGrid時出現問題(使用GridLookUpEdit)

[英]problems setting XtraGrid with in-place editor-s (using GridLookUpEdit)

我需要一個具有GridLookupEdit的XtraGrid控件來輸入列值。

到目前為止,我設法做到了:

1)我已經配置了XtraGrid控件

columns: ID, Name, Number
in-place GridLookUp Editors for Name and Number columns

2)在窗體加載事件上,我從數據庫加載數據並設置XtraGrid數據源以及repositoryItem(..)數據源,valuemember和displaymember

a)數據已加載到XtraGrid中,我可以激活單元格,但是不能從下拉列表中選擇值(從repositoryItem(..))或手動輸入值(我可以在“ *”新行中激活單元格,但是存在相同的問題-可以不能從下拉菜單中選擇或手動輸入值)=>為什么?

b)如果我沒有為XtraGrid設置數據源,則兩個下拉菜單都處於活動狀態,並且我可以使用GridLookupEdit選擇值,但是當我退出該單元格時,該單元格將被清除=>我相信這是因為在這種情況下,沒有xtraGrid.DataSource設置好了嗎?

        var model = (from TableA a in _dbE.TableA select new {ID, Name, Number}).ToList();

        //if i comment this line out, then i can choose values from GridLookUpEdit
        gridControl1.DataSource = model; 

        repositoryItemNosaukums.DataSource = model;
        repositoryItemNosaukums.ValueMember = "ID";
        repositoryItemNosaukums.DisplayMember = "Name";

        repositoryItemPieteikumaNr.DataSource = model;
        repositoryItemPieteikumaNr.ValueMember = "ID";
        repositoryItemPieteikumaNr.DisplayMember = "Number";

我想念什么?

問題是,我的數據源“模型”是一個列表,但它應該是具有屬性AllowNew == True和AllowEdit == True的BindingList。

在DevExpress支持人員詢問數據源是否為只讀之后,我發現了這篇帖子,它終於讓我大開眼界:

DataGridView中的問題:datagridview對用戶(WinForms)似乎是只讀的

正確的代碼版本

    //no projections (select new ...) for IBindingList<T>..
       //var model = (from TableA a in _dbE.TableA select new {ID, Name, Number}).ToList();
    var model = (from TableA a in _dbE.TableA).ToList(); 

    //convert to BindingList
    var bindingModel= new BindingList<TableA>(model);
    bindingModel.AllowNew=true;
    bindingModel.AllowEdit=true;

    //bind BindingList to datagrid
    gridControl1.DataSource = bindingModel; //model; 

    //... no changes to repositoryItem(..) stuff
    repositoryItemNosaukums.DataSource = model;
    repositoryItemNosaukums.ValueMember = "ID";
    repositoryItemNosaukums.DisplayMember = "Name";

    repositoryItemPieteikumaNr.DataSource = model;
    repositoryItemPieteikumaNr.ValueMember = "ID";
    repositoryItemPieteikumaNr.DisplayMember = "Number";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM