zoukankan      html  css  js  c++  java
  • DevExpress GridControl 控件二表连动

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Linq;
    using System.Windows.Forms;
    using DevExpress.XtraEditors;
    using DevExpress.XtraEditors.Repository;
    
    namespace Thread {
        public partial class XtraForm1 : DevExpress.XtraEditors.XtraForm {
            private IList<Order> list = null;
            private IList<OrderGoods> orderGoods = null;
            public XtraForm1() {
                InitializeComponent();
                list = GetOrders();
                orderGoods = GetOrderGoods();
            }
    
            private IList<Order> GetOrders() {
                var list = new List<Order>();
                list.Add(new Order { OrderNo = "A001", Rearmk = "Rearmk1" });
                list.Add(new Order { OrderNo = "A002", Rearmk = "Rearmk2" });
                list.Add(new Order { OrderNo = "A003", Rearmk = "Rearmk3" });
                return list;
            }
    
            private IList<OrderGoods> GetOrderGoods() {
                var list = new List<OrderGoods>();
                list.Add(new OrderGoods { OrderNo = "A001", Qty = 1, GoodsNo = "G01" });
                list.Add(new OrderGoods { OrderNo = "A001", Qty = 2, GoodsNo = "G02" });
                list.Add(new OrderGoods { OrderNo = "A001", Qty = 3, GoodsNo = "G03" });
    
                list.Add(new OrderGoods { OrderNo = "A002", Qty = 4, GoodsNo = "G04" });
                list.Add(new OrderGoods { OrderNo = "A002", Qty = 5, GoodsNo = "G05" });
                list.Add(new OrderGoods { OrderNo = "A002", Qty = 6, GoodsNo = "G06" });
    
                list.Add(new OrderGoods { OrderNo = "A003", Qty = 7, GoodsNo = "G07" });
                list.Add(new OrderGoods { OrderNo = "A003", Qty = 8, GoodsNo = "G08" });
                list.Add(new OrderGoods { OrderNo = "A003", Qty = 9, GoodsNo = "G09" });
    
                return list;
            }
    
            private void XtraForm1_Load(object sender, EventArgs e) {
                this.gridControl1.DataSource = list;
            }
    
            private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e) {
    
            }
    
            private void gridControl1_Click(object sender, EventArgs e) {
            }
    
            DataTable table;
    
            private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) {
                var order = gridView1.GetFocusedRow() as Order;
                table = GetOrderGoodsTable(order.OrderNo);
                this.gridControl2.DataSource = table;
            }
    
            private DataTable GetOrderGoodsTable(string gNo) {
    
                if (gNo == "A001") {
                    table = new DataTable("CartonExTemp");
                    table.Columns.Add(new DataColumn("GoodsNo", typeof(string)));
                    table.Columns.Add(new DataColumn("X", typeof(int)));
                    table.Columns.Add(new DataColumn("M", typeof(int)));
                    table.Columns.Add(new DataColumn("L", typeof(int)));
                    table.Rows.Add("G001", 1, 5, 6);
                    table.Rows.Add("G002", 2, 7, 8);
                    table.Rows.Add("G003", 3, 9, 10);
                }
                else if (gNo == "A002") {
                    table = new DataTable("CartonExTemp");
                    table.Columns.Add(new DataColumn("GoodsNo", typeof(string)));
                    table.Columns.Add(new DataColumn("30", typeof(int)));
                    table.Columns.Add(new DataColumn("31", typeof(int)));
                    table.Rows.Add("G003", 1, 4);
                    table.Rows.Add("G004", 2, 5);
                    table.Rows.Add("G005", 3, 6);
                }
                else {
    
                    table = new DataTable("CartonExTemp");
                    table.Columns.Add(new DataColumn("GoodsNo", typeof(string)));
                    table.Columns.Add(new DataColumn("30", typeof(int)));
                    table.Columns.Add(new DataColumn("31", typeof(int)));
                    table.Rows.Add("G003", 10, 40);
                    table.Rows.Add("G004", 20, 50);
                    table.Rows.Add("G005", 30, 60);
                }
                return table;
            }
    
            private void gridView2_DataSourceChanged(object sender, EventArgs e) {
                gridView2.Columns.Clear();
                foreach (DataColumn dc in table.Columns) {
                    var gridColumn1 = gridView2.Columns.AddVisible(dc.ColumnName);
                    if (dc.ColumnName == "GoodsNo") {
                        gridColumn1.Caption = "货号";
                        gridColumn1.OptionsColumn.AllowEdit = false;
                        gridColumn1.Width = 20;
                    }
                    else {
                        gridColumn1.ColumnEdit = new RepositoryItemSpinEdit();
                    }
                }
                gridView2.BestFitColumns();
            }
    
        }
    
    
        public class Order {
            public string OrderNo { get; set; }
            public string Rearmk { get; set; }
        }
    
        public class OrderGoods {
            public string GoodsNo { get; set; }
            public int Qty { get; set; }
            public string OrderNo { get; set; }
        }
    }

    回车事件,转到下一可编辑的单元格

      private void gridView1_KeyDown(object sender, KeyEventArgs e) {
                GridView grid = sender as GridView;
    
                if (e.KeyCode == Keys.Enter) {
                    int focusedRowHandle = grid.FocusedRowHandle;
    
                    int index = GetNextIndex(grid);
                    this.Text = string.Format("index={0},grid.FocusedColumn.VisibleIndex={1}", index, grid.FocusedColumn.VisibleIndex);
                    if (index == grid.VisibleColumns.Count - 1) {
                        focusedRowHandle++;
                    }
                    BeginInvoke(new MethodInvoker(() => {
                        grid.FocusedRowHandle = focusedRowHandle;
                        grid.FocusedColumn = grid.VisibleColumns[index];
                        grid.ShowEditor();
                    }));
    
                }
            }

  • 相关阅读:
    刷题-力扣-120. 三角形最小路径和
    刷题-力扣-1738. 找出第 K 大的异或坐标值
    刷题-力扣-96. 不同的二叉搜索树
    刷题-力扣-64. 最小路径和
    刷题-力扣-1734. 解码异或后的排列
    刷题-力扣-63. 不同路径 II
    刷题-力扣-62. 不同路径
    课程作业 02 动手动脑 2017.10.13
    课程作业 02 2017.10.13
    课程作业01 感想
  • 原文地址:https://www.cnblogs.com/ycdx2001/p/5090370.html
Copyright © 2011-2022 走看看