方法/步骤
1.
1
1. RepositoryItemLookUpEdit
要显示
控件的创建,我是在CustomRowCellEditForEditing这个事件下处理的。(因为我所需
的列是动态创建的,所以需要这样创建,如果你是固定显示,直接绑定
RepositoryItemLookUpEdit
RepositoryItemLookUpEdit
点击事件就可以了。)在这个事件里面,还可以控制某一列不同行显示不同控件。(因
为Devexpress是只能设置某一列控件的属性的,不能精准到控制每个单元格中的控件)
//DEPOT 堆场列 级联 PORT港口列
private void Frm _Load(object sender, EventArgs e) { }
void gridView_CustomRowCellEditForEditing(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e) {
DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;
DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit lue = new DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit(); switch (e.Column.FieldName) {
case \"DEPOT\": //获取该行port
string portFilter = view.GetRowCellValue(e.RowHandle, \"PORT\").ToString(); if (portFilter != null && portFilter != \"\") {
this.depotBindingSource.Filter = string.Format(\"Port='{0}'\", portFilter); } else {
gridView.CustomRowCellEditForEditing += gridView_CustomRowCellEditForEditing;
//自定义一个查不到结果的 过滤条件
lue.DataSource = this.depotBindingSource.Filter = string.Format(\"Port='123456'\", portFilter); }
#region RepositoryItemLookUpEdit 格式化 lue.DataSource = depotBindingSource; lue.DisplayMember = \"CODE\";
lue.ValueMember = \"CODE\";
lue.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; lue.Columns.AddRange(new DevExpress.XtraEditors.Controls.LookUpColumnInfo[] {
new DevExpress.XtraEditors.Controls.LookUpColumnInfo(\"CODE\", 90, \"Code\"), new DevExpress.XtraEditors.Controls.LookUpColumnInfo(\"Desp\", 350, \"Desp\"),
new DevExpress.XtraEditors.Controls.LookUpColumnInfo(\"Port\", 60, \"Port\")}); lue.PopupFormMinSize = new System.Drawing.Size(500, 0); lue.PopupWidth = 500; #endregion
//LookUpEdit值改变后触发
lue.EditValueChanged += lue_EditValueChanged; //下拉框选中值后,需要进行转换 lue.ParseEditValue += lue_ParseEditValue; //指定该列控件 e.RepositoryItem = lue; break; } } 2.
//选择RepositoryItemLookUpEdit的值时进行的处理。
void lue_EditValueChanged(object sender, EventArgs e) {
DevExpress.XtraEditors.BaseEdit edit = gridView.ActiveEditor; switch (gridView.FocusedColumn.FieldName) { case \"DEPOT\"://堆场 列
gridView.SetFocusedRowCellValue(gridView.Columns[\"DEPOT\"], edit.EditValue);
break; } } 3.
//grid中的下拉框必须要处理一下,不然会报(对象必须实现iconvertible) 错误
void lue_ParseEditValue(object sender,
DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs e) {
if (e.Value != null)
e.Value = e.Value.ToString();
else
e.Value = \"\"; e.Handled = true; }
因篇幅问题不能全部显示,请点此查看更多更全内容