using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraEditors.Controls;
this.gridView1.CustomRowCellEditForEditing += new DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventHandler(this.gridView1_CustomRowCellEditForEditing);
namespace 级联示例
{
public partial class XtraForm1 : DevExpress.XtraEditors.XtraForm
{
DataTable Position, Warehouse;
public XtraForm1()
{
InitializeComponent();
}
private void XtraForm1_Load(object sender, EventArgs e)
{
DataFace(GetWH());
Position = OtherTable("Select Position.cPosCode,cWhCode from Position");
Warehouse = OtherTable("Select cWhCode,cWhName from Warehouse Where bWhPos=1");
}
public void DataFace(DataTable dt)
{
gridControl1.DataSource = dt;
}
public DataTable GetWH()
{
string sql = "Select Warehouse.cWhCode,Warehouse.cWhName,Position.cPosCode,Position.cPosName from Position Join Warehouse On Position.cWhCode=Position.cWhCode";
string Conn = "Data Source=192.168.1.100;Initial Catalog=UFDATA_888_2015;User ID=sa;Password=u82014";
return DataBaseClass.GetDataTable(sql, Conn, 30);
}
public DataTable OtherTable(string sql)
{
// string sql = "Select Warehouse.cWhCode,Warehouse.cWhName,Position.cPosCode,Position.cPosName from Position Join Warehouse On Position.cWhCode=Position.cWhCode";
string Conn = "Data Source=192.168.1.100;Initial Catalog=UFDATA_888_2015;User ID=sa;Password=u82014";
return DataBaseClass.GetDataTable(sql, Conn, 30);
}
private void gridView1_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 "cWhCode":
// DataTable dt2 = OtherTable("Select cWhCode from Warehouse Where bWhPos=1");
//给该行combobox绑定数据源
cbx.Items.Clear();
for (int i = 0; i < Warehouse.Rows.Count; i++)
{
cbx.Items.Add(Warehouse.Rows[i]["cWhCode"]);
}
//combobox值改变后触发
cbx.SelectedValueChanged += new EventHandler(cbx_SelectedValueChanged);
//下拉框选中值后,需要进行转换
cbx.ParseEditValue += new ConvertEditValueEventHandler(cbx_ParseEditValue);
//指定该列控件
e.RepositoryItem = cbx;
gridView1.Columns["cWhCode"].ColumnEdit = cbx;
break;
case "cPosCode":
cbx.Items.Clear();
string cWhCode = gridView1.GetRowCellValue(e.RowHandle, "cWhCode").ToString();
DataView dv = new DataView(Position);
dv.RowFilter = "cWhCode='" + cWhCode+"'";//过滤
DataTable dt_New = dv.ToTable();
cbx.SelectedValueChanged += new EventHandler(cbx_SelectedValueChanged);
e.RepositoryItem = cbx;
for (int i = 0; i < dt_New.Rows.Count; i++)
{
cbx.Items.Add(dt_New.Rows[i]["cPosCode"]);
}
gridView1.Columns["cPosCode"].ColumnEdit = cbx;
break;
default: break;
}
}
private void cbx_SelectedValueChanged(object sender, EventArgs e)
{
gridlu_SelectedValueChanged
DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;
BaseEdit edit = gridView1.ActiveEditor;
//下拉框数据更改之后,改变级联下拉框数据
switch (gridView1.FocusedColumn.FieldName)
{
case "cWhCode"://楼栋
gridView1.SetFocusedRowCellValue(gridView1.Columns["cPosCode"], "请选择货位");
string cWhCode1 = edit.EditValue.ToString();// gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "cWhCode").ToString();
DataView dv1 = new DataView(Warehouse);
dv1.RowFilter = "cWhCode='" + cWhCode1 + "'";//过滤
DataTable dt_New = dv1.ToTable();
string name = dt_New.Rows[0]["cWhName"].ToString();
gridView1.SetFocusedRowCellValue("cWhName", name);
break;
}
}
//对象必须实现iconvertible
private void cbx_ParseEditValue(object sender, ConvertEditValueEventArgs e)
{
e.Value = e.Value.ToString();
e.Handled = true;
}
}
}

4653

被折叠的 条评论
为什么被折叠?



