0

我在 XtraGrid 中定义了以下列。该列由强制用户选择 3 个选项之一的下拉列表组成。每次用户更改下拉列表的值时,如何连接触发的事件?

this.myCol.AppearanceCell.Options.UseTextOptions = true;
this.myCol.AppearanceCell.TextOptions.HAlignment = 
    DevExpress.Utils.HorzAlignment.Near;
this.myCol.Caption = "My Caption";
this.myCol.ColumnEdit = this._myRepositoryLookup;
this.myCol.FieldName = "MyFieldName";
this.myCol.Name = "myId";
this.myCol.Visible = true;
this.myCol.VisibleIndex = 5;
this.myCol.Width = 252;
4

3 回答 3

1

你需要看看

GridView.CustomRowCellEdit 事件或存储库项事件

这是一个示例

使用 DevExpress.XtraGrid.Views.Grid;

private void gridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e) {
   if (e.Column.FieldName == "FieldName") return;
   GridView gv = sender as GridView;
   string fieldName = gv.GetRowCellValue(e.RowHandle, gv.Columns["FieldName"]).ToString();
   switch (fieldName) {
      case "Population":
         e.RepositoryItem = repositoryItemSpinEdit1;
         break;
      case "Country":
         e.RepositoryItem = repositoryItemComboBox1;
         break;
      case "Capital":
         e.RepositoryItem = repositoryItemCheckEdit1;
         break;
   }           
}

在这里补充阅读

于 2013-01-14T23:41:42.917 回答
1

您可以订阅 在使用这些存储库项控件时要引发的任何RepositoryItemLookUpEdit 事件。

根据您的要求,您应该使用RepositoryItem.EditValueChanged Event,它在更改编辑值后立即触发。

笔记

在增量搜索期间,查找编辑器的 EditValueChangedFiringMode 属性在其弹出窗口打开时将被忽略。如果在增量搜索期间更改了编辑器的编辑值,则会立即触发 EditValueChanged 事件。

代码片段:

_myRepositoryLookup.EditValueChanged += new EventHandler(_myRepositoryLookup_EditValueChanged);
this.myCol.AppearanceCell.Options.UseTextOptions = true;
this.myCol.AppearanceCell.TextOptions.HAlignment = 
                        DevExpress.Utils.HorzAlignment.Near;
this.myCol.Caption = "My Caption";
this.myCol.ColumnEdit = this._myRepositoryLookup;

LookupEdit 事件处理方法

void _myRepositoryLookup_EditValueChanged(object sender, EventArgs e)
{
    //your code here
}

如果要将编辑器分配给单个单元格,则可以使用GridView.CustomRowCellEdit 事件

可能对您有所帮助的参考资料:
DevExpress RepositoryItemLookUpEdit
Get Cell Control of GridView in DevExpress

于 2013-01-15T06:03:23.513 回答
1

将事件直接添加到存储库项。

这样,您可以从下拉事件中进行选择,而不是从列或单元格中进行选择。

repositoryItem.EditValueChanged += new System.EventHandler(repositoryItem_EditValueChanged);
于 2013-01-15T09:44:24.130 回答