首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用在位编辑器设置XtraGrid时出现问题(使用GridLookUpEdit)

使用在位编辑器设置XtraGrid时出现问题(使用GridLookUpEdit)
EN

Stack Overflow用户
提问于 2013-03-16 03:16:49
回答 1查看 2.2K关注 0票数 0

我需要一个具有GridLookupEdit的XtraGrid控件来输入列值。

到目前为止,我成功地做到了:

1)我已经配置了XtraGrid控件

代码语言:javascript
复制
columns: ID, Name, Number
in-place GridLookUp Editors for Name and Number columns

2)在表单加载事件上,我从数据库加载数据并设置XtraGrid数据源和repositoryItem(..)datasource、valuemember和displaymember

a)数据加载到XtraGrid中,我可以激活单元格,但不能从下拉列表中选择值(从repositoryItem(..))或者手动输入值(我可以激活"*“新行中的单元格,但它有相同的问题-不能从下拉列表中选择或手动输入值) =>为什么?

b)如果我没有为XtraGrid设置数据源,那么两个下拉列表都是活动的,我可以使用GridLookupEdit选择值,但是当我退出单元格时,单元格被清除=>我相信这是因为在这种情况下没有设置xtraGrid.DataSource?

代码语言:javascript
复制
        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";

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-18 05:49:50

问题是,我的数据源“模型”是一个列表,但它应该是带有AllowNew==True和AllowEdit==True属性的BindingList。

在DevExpress支持询问数据源是否是只读的之后,我发现了这篇文章,它终于让我大开眼界:

A Problem in DataGridView : datagridview seems readonly to user (WinForms)

代码的正确版本

代码语言:javascript
复制
    //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";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15440436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档