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