子表控件的元数据如下:属性、事件、方法:
public class SheetSubTableSZ : WebControl, ISheetControl{// 分隔符public const char Separator = ';';public const string SeqNoColumnName = "序号";// 添加按钮public Button Add;// 子表的编辑视图public Table EditTable;// 子表的显示视图public GridView ItemView;public Button Remove;public Label Result;public Button Update;public SheetSubTableSZ();public override Color BackColor { get; set; }// 当前表的列定义protected Dictionary<string, DataColumn> Columns { get; }// 绑定字段public string DataField { get; set; }// 如果使能,则显示编辑控件和选中列public override bool Enabled { get; set; }public override string ID { get; set; }// 新建的项目的IDpublic string NewItemIdsText { get; set; }// 是否是必输public bool Required { get; }// 从数据库中获得当前控件中行的数量public int RowCount { get; }// 对应的表名称public string TableName { get; }// 页脚加载事件public event EventHandler<SheetSubTableSZ.CountingEventArgs> Counting;// 编辑器初始化事件public event EventHandler<SheetSubTableSZ.EditorInitializingEventArgs> EditorInitializing;// 编辑器加载事件public event EventHandler<SheetSubTableSZ.EditorLoadingEventArgs> EditorLoading;// 编辑器保存事件public event EventHandler<SheetSubTableSZ.EditorSavingEventArgs> EditorSaving;public event EventHandler<GridViewCommandEventArgs> RowCommand;// 数据绑定事件public event EventHandler<GridViewRowEventArgs> RowDataBound;public void Add_Click(object sender, EventArgs e);public object AvgColumn(string ColumnName);// 创建执行SQL的对象protected ICommand CreateCommand();// 根据列名称检索列 public int GetColumnIndex(string ColumnName);public static Control GetDefaultControl(string ColumnName, Type ColumnType);public static string GetDefaultControlValue(string ColumnName, Type ColumnType, Control Control, ref bool Valid, ref string ErrorMessage);// 获得某个列的编辑控件public Control GetEditControl(string ColumnName);// 设置字段/列显示名称和描述public static void GridView_SetCellHeaderText(GridViewRowEventArgs e, string s_FieldName, string s_HeaderText);// 设置列不可见/隐藏public void GridView_SetCellNotVisible(GridViewRowEventArgs e, string s_FieldName);// 是否是保留系统列protected bool IsSysColumn(string ColumnName);// 加载数据public virtual void LoadDataField(ISheetPage SheetPage);// 加载所有数据//yzg:加载所有数据到GridViewpublic void LoadTable();protected override void OnInit(EventArgs e);protected override void OnLoad(EventArgs e);protected override void Render(HtmlTextWriter writer);public virtual void SaveDataField(ISheetPage SheetPage);// 设置字段标签和控件的样式public void SetColumnCss(string columnName, string label_style, string control_style, string desc_style);// 设置字段的显示名称和描述public void SetColumnDisplayNameDesc(string columnName, string displayName, string description);// 设置列隐藏或显示public void SetColumnVisiable(string columnName, bool EditVisible, bool GridCellVisible);public static void SetDefaultControlValue(string ColumnName, Type ColumnType, Control Control, object Value);// 设置字段的显示名称和描述public void SetSortColumn(string columnName, SheetSubTableSZ.SortType sortType);// 设置子表控件GridView的模板列public void SetTemplateColumns(DataControlField columnName);public object SumColumn(string ColumnName);public void Update_Click(object sender, EventArgs e);// 验证输入public virtual bool ValidateDataField(ISheetPage SheetPage, SheetSubmitEventArgs Args, List<string> Errors);// 子表操作方式public enum ActionType{// 添加操作Add = 0,// 更新操作Update = 1,// 删除操作Remove = 2,// 加载数据操作LoadData = 3,// 无操作None = 4,}// 页脚的加载方式public enum CountingType{// 总和Sum = 0,// 平均Avg = 1,// 计数Count = 2,// 不做统计None = 3,}// 子表排序类型public enum SortType{// 升序Asc = 0,// 降序Desc = 1,// 默认Normal = 2,}// 页脚加载事件public class CountingEventArgs : EventArgs{public CountingEventArgs(string ColumnName, SheetSubTableSZ.CountingType CountingType);// 列名称public string ColumnName { get; }// 统计方式public SheetSubTableSZ.CountingType CountingType { get; set; }}// 编辑器初始化事件public class EditorInitializingEventArgs : EventArgs{public EditorInitializingEventArgs(string ColumnName, Type ColumnType);// 列名称public string ColumnName { get; }// 列的类型public Type ColumnType { get; }// 编辑控件public Control Control { get; set; }public string Description { get; set; }// 显示名称public string DisplayName { get; set; }// 该控件是否可见public bool Visible { get; set; }}// 编辑器加载事件public class EditorLoadingEventArgs : EventArgs{public EditorLoadingEventArgs(string ColumnName, Type ColumnType, object Value, Control Control);// 当前行所有单元格和值public Dictionary<string, string> Cells { get; set; }// 列名称public string ColumnName { get; }// 列类型public Type ColumnType { get; }// 编辑控件public Control Control { get; }// 如果设置了值,则把这个属性设置为truepublic bool Set { get; set; }// 值public object Value { get; }}public class EditorSavingEventArgs : EventArgs{public EditorSavingEventArgs(string ColumnName, Control Control);// 子表操作类型:Add , Updatepublic SheetSubTableSZ.ActionType Action { get; set; }// 当前行所有单元格和值public Dictionary<string, string> Cells { get; set; }// 列名称public string ColumnName { get; }// 编辑控件public Control Control { get; }// 如果不合法则设置错误消息public string ErrorMessage { get; set; }// 是否获得public bool Get { get; set; }// 值是否合法public bool Valid { get; set; }// 值的字符串形式public string Value { get; set; }}}