实现:GridControl中的列表包括三列:名称、目标栏位、源栏位

    image.png
    image.png
    第一步
    在RunDesigner中设置
    1、三列的FieldName和绑定的DataTable必须一致
    2、且设置OptionsView—>ColumnAutoWidth=false;
    3、第三列的ColumnEdit添加repositoryComboBoxEdit

    第二步
    用代码给repositoryComboxEdit添加下拉选项,设置了CboItemEntity类

    1. private void AddItems(string[] columnName)
    2. {
    3. int length = columnName.Length;
    4. CboItemEntity itemnull = new CboItemEntity();
    5. itemnull.Text = string.Empty;
    6. itemnull.Value = 0;
    7. for (int i = 0; i < length; i++)
    8. {
    9. CboItemEntity item = new CboItemEntity();
    10. item.Text = columnName[i];
    11. item.Value = i+1;
    12. repositoryItemComboBox1.Items.Add(item);
    13. }
    14. }
    15. public class CboItemEntity
    16. {
    17. private object _text = 0;
    18. private object _Value = "";
    19. ///
    20. /// 显示值
    21. ///
    22. public object Text
    23. {
    24. get { return this._text; }
    25. set { this._text = value; }
    26. }
    27. ///
    28. /// 对象值
    29. ///
    30. public object Value
    31. {
    32. get { return this._Value; }
    33. set { this._Value = value; }
    34. }
    35. public override string ToString()
    36. {
    37. return this.Text.ToString();
    38. }
    39. }

    第三步:初始化DataTable绑定

    1. dt.Columns.Add("Name", typeof(string));
    2. dt.Columns.Add("AimColumn", typeof(string));
    3. dt.Columns.Add("OriginColumn", typeof(string));
    4. dt.Rows.Add(new object[]{"name","aimcolumn","origincolumn"});
    5. //根据需求自行添加
    6. //dt.Rows.Add(new object[]{"name","aimcolumn","origincolumn"});
    7. //gridControl绑定
    8. this.gridControl2.DataSource = Table_Choose;
    9. this.gridView2.BestFitColumns();
    10. //绑定下拉框改变事件
    11. repositoryItemComboBox1.SelectedIndexChanged += new EventHandler(repositoryItemComboBox1_SelectedIndexChanged);
    12. repositoryItemComboBox1.ParseEditValue += new DevExpress.XtraEditors.Controls.ConvertEditValueEventHandler(repositoryItemComboBox1_ParseEditValue);

    第四步:下拉菜单的事件

    1. void repositoryItemComboBox1_ParseEditValue(object sender, DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs e)
    2. {
    3. e.Value = e.Value.ToString();
    4. e.Handled = true;
    5. }
    6. void repositoryItemComboBox1_SelectedIndexChanged(object sender, EventArgs e)
    7. {
    8. CboItemEntity item = new CboItemEntity();
    9. try
    10. {
    11. //1.获取下拉框选中值
    12. item = (CboItemEntity)(sender as ComboBoxEdit).SelectedItem;
    13. string text = item.Text.ToString();
    14. int value = (int)item.Value;
    15. //2.获取gridview选中的行
    16. GridView myView = (gridControl2.MainView as GridView);
    17. int dataIndex = myView.GetDataSourceRowIndex(myView.FocusedRowHandle);
    18. //3.保存选中值到datatable
    19. Table_Choose.Rows[dataIndex]["OriginColumn"] = text;
    20. gridControl2.DataSource = Table_Choose;
    21. gridControl2.RefreshDataSource();
    22. }
    23. catch (Exception ex)
    24. {
    25. XtraMessageBox.Show(ex.Message, "提示");
    26. }
    27. }
    28. }