DevExpress gridView级联示例


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;
        }
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值