public void BuildGridData() { FormMain.Instance.FormError.RemoveErrorByGrid(GridData); GridData = new GridData(this); BeanDefine.BuildGridColumns(GridData, 0, new ColumnTag(ColumnTag.ETag.Normal), -1); var param = new Bean.UpdateParam() { UpdateType = Bean.EUpdate.Grid }; foreach (var bean in _Beans) { int insertIndex = GridData.RowCount; GridData.InsertRow(insertIndex); int colIndex = 0; if (bean.Update(GridData, GridData.GetRow(insertIndex), ref colIndex, 0, param)) { break; } } for (int i = 0; i < GridData.ColumnCount; ++i) { ColumnTag tag = GridData.GetColumn(i).ColumnTag; switch (tag.Tag) { case ColumnTag.ETag.AddVariable: case ColumnTag.ETag.ListStart: case ColumnTag.ETag.ListEnd: continue; } tag.BuildUniqueIndex(GridData, i); } }
public int BuildGridColumns(GridData grid, int columnIndex, ColumnTag tag, int listIndex) { switch (Type) { case EType.List: { grid.InsertColumn(columnIndex, new GridData.Column() { HeaderText = "[" + this.Name, ReadOnly = true, ToolTipText = Name + ":" + Value + ":" + Comment, ColumnTag = tag.Copy(ColumnTag.ETag.ListStart).AddVar(this, -1), }); for (int i = 0; i < grid.RowCount; ++i) { grid.GetCell(columnIndex, i).Value = "["; } if (null == Reference) { throw new Exception("List Reference Not Initialize."); } ++columnIndex; int colAdded = 0; if (listIndex >= 0) { colAdded = Reference.BuildGridColumns(grid, columnIndex, tag.Copy(tag.Tag).AddVar(this, listIndex), -1); } columnIndex += colAdded; grid.InsertColumn(columnIndex, new GridData.Column() { HeaderText = "]" + this.Name, ReadOnly = true, ToolTipText = Name + ": 双击此列增加List Item。", // 这里的 PathLast.ListIndex 是List中最大的Item数量,以后在Bean.Update中修改。 ColumnTag = tag.Copy(ColumnTag.ETag.ListEnd).AddVar(this, 0), }); for (int i = 0; i < grid.RowCount; ++i) { grid.GetCell(columnIndex, i).Value = "]"; } return(colAdded + 2); } /* * case EType.Enum: * { * DataGridViewCell template = new DataGridViewTextBoxCell(); * ColumnTag current = tag.Copy(tag.Tag).AddVar(this, -1); * grid.Columns.Insert(columnIndex, new DataGridViewColumn(template) * { * Name = this.Name, * Width = GridColumnValueWidth, * ToolTipText = Name + ":" + Comment, * Tag = current, * Frozen = false, * AutoSizeMode = DataGridViewAutoSizeColumnMode.None, * }); * // 自动完成来实现enum选择。不使用Combobox. * current.BuildUniqueIndex(grid, columnIndex); * return 1; * } */ default: { ColumnTag current = tag.Copy(tag.Tag).AddVar(this, -1); grid.InsertColumn(columnIndex, new GridData.Column() { HeaderText = Name, ToolTipText = Name + ":" + Comment, ColumnTag = current, }); current.BuildUniqueIndex(grid, columnIndex); return(1); } } }