Devexpress GridControl中combobox级联显示

 时间:2024-10-18 18:01:29

1、combobox控件的创建,我是在CustomRowCellEditForEditing这个事件下处理的。(因为我所需要显示co罪焐芡拂mbobox的列是动态创建的,所以需要这样创建,如果你是固定显示,直接绑定combobox点击事件就可以了。)在这个事件里面,还可以控制某一列不同行显示不同控件。(因为Devexpress是只能设置某一列控件的属性的,不能精准到控制每个单元格中的控件) private void gvwFetchData_CustomRowCellEditForEditing(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e) { DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView; RepositoryItemComboBox cbx = new DevExpress.XtraEditors.Repository.RepositoryItemComboBox(); switch (e.Column.FieldName) { //case "DBConstructionID": //cbx.Items.Clear(); // cbx.Items.AddRange(cbxConstructions.Select(c => new Models.ComboBoxItemTextValue<int>(c.FieldID, c.FieldName)).ToList()); // cbx.SelectedValueChanged += new EventHandler(cbx_SelectedValueChanged); // //e.RepositoryItem = cbx; // gclDataOperate.RepositoryItems.Add(cbx); // gvwFetchData.Columns["ConstructionName"].ColumnEdit = cbx; //break; case "BuildingName": //获取该行楼盘id string constructid = gvwFetchData.GetRowCellValue(e.RowHandle, "DBConstructionID").ToString(); //楼栋 //根据楼盘查询楼栋的数据 IList<BLL.RealDataWeb.ComboBoxField> cbxBuildings = matchData.GetBuilding(iCityID, Convert.ToInt32(constructid)); //给该行楼栋combobox绑定数据源 cbx.Items.Clear(); cbx.Items.AddRange(cbxBuildings.Select(b => new Models.ComboBoxItemTextValue<int>(b.FieldID, b.FieldName)).ToList()); //combobox值改变后触发 cbx.SelectedValueChanged += new EventHandler(cbx_SelectedValueChanged); //下拉框选中值后,需要进行转换 cbx.ParseEditValue += new ConvertEditValueEventHandler(cbx_ParseEditValue); //指定该列控件 e.RepositoryItem = cbx; break; case "HouseName": string BuindId = gvwFetchData.GetRowCellValue(e.RowHandle, "DBBuildingID").ToString(); //房号 IList<BLL.RealDataWeb.ComboBoxField> House = matchData.GetHouse(iCityID, Convert.ToInt32(BuindId)); cbx.Items.Clear(); cbx.Items.AddRange(House.Select(h => new Models.ComboBoxItemTextValue<int>(h.FieldID, h.FieldName)).ToList()); cbx.SelectedValueChanged += new EventHandler(cbx_SelectedValueChanged); cbx.ParseEditValue += new ConvertEditValueEventHandler(cbx_ParseEditValue); e.RepositoryItem = cbx; break; default: break; } }

Devexpress GridControl中combobox级联显示

2、选择combobox的值时进行的处理。(例如选择楼盘后,将楼盘id存放在一隐藏列中,在点击楼栋时,获取该id,查询所需要的数据源,进行绑定) private void cbx_SelectedValueChanged(object sender, EventArgs e) { BaseEdit edit = gvwFetchData.ActiveEditor; //下拉框数据更改之后,改变级联下拉框数据 switch (gvwFetchData.FocusedColumn.FieldName) { //case "ConstructionName"://楼盘 // gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBConstructionID"], ((ComboBoxItemTextValue<int>)edit.EditValue).SelectValue); // gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["BuildingName"], "选择楼栋"); // gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBBuildingID"], 0); // gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["HouseName"], "选择房屋"); // gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBHouseID"], 0); // break; case "BuildingName"://楼栋 gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBBuildingID"], ((ComboBoxItemTextValue<int>)edit.EditValue).SelectValue); gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBHouseName"], "选择房屋"); gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBHouseID"], 0); break; case "HouseName"://房号 gvwFetchData.SetFocusedRowCellValue(gvwFetchData.Columns["DBHouseID"], ((ComboBoxItemTextValue<int>)edit.EditValue).SelectValue); break;}

Devexpress GridControl中combobox级联显示
Devexpress GridControl中combobox级联显示

3、 //grid中的下拉框必须要处理一下,不然会报(对象必须实现iconvertible)错误 private void cbx_ParseEditValue(object sender, ConvertEditValueEventArgs e) { e.Value = e.Value.ToString(); e.Handled = true; }

  • 一加9rt手机怎样关闭指纹动画音
  • 用苹果手机怎么下载qq斗地主?
  • 怎么打开种图文件。
  • 公文写作函的写法
  • 中医养生如何理解——健康
  • 热门搜索
    生命的意义手抄报 名胜古迹手抄报 爱国的手抄报内容 爱的教育手抄报图片 团结友爱手抄报图片 二月二龙抬头的手抄报 春节手抄报a3纸 手抄报插图大全 童话世界手抄报 关于对联的手抄报