连载:(三)循序渐进,通过XML配置,实现通用于WinForm(.Net)、WebForm(Asp.Net+JQuery+EasyUI)表单、报表
--XML控制文件
作者:长江支流
本章,将给出控制文件相关类的C#.Net源代码,包括控制文件主控类WebMisController、以及控制文件的组成部分表单及清单过滤字段Field类、回调函数类CallbackFun。
控制文件
控制文件由WebMIS.ServiceModel.WebMisController/ WebMisControllerSerializer类去描述和解析。
控件文件格式参考如下:
<?xmlversion="1.0"encoding="utf-8"?> <WebMisControllerSerializerxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Controller> <!--注意,Select中的字段大小写,所以Field中的Name节点,要与之一样。大小写敏感--> <Select>Select ID,DM,MC Fromtest_EntityAccessORM</Select> <TableName> test_EntityAccessORM </TableName> <!—可选--> <UpdateWhere> <value>Where ID=@ID</value> </UpdateWhere> <DeleteWhere> <value>Where ID=@ID </value> </DeleteWhere> <CallbackFun> <AfterLoad></AfterLoad> <AfterDeleted></AfterDeleted> </CallbackFun> <Fields> <Field> <ID>ID</ID> <Name>id</Name> <Title>标识ID</Title> <Align>right</Align> <Width>20</Width> </Field> <Field> <!--ID节点表示WinForm/WebForm中控件的ID属性或标准html元素的name属性,大小写要一致--> <ID>Code</ID> <!--Name节点表示Select中指定的字段名,大小写要一致--> <Name>DM</Name> <Title>代码</Title> </Field> <Field> <ID>Name</ID> <Name>MC</Name> <Title>代码</Title> </Field> </Fields> </Controller> </WebMisControllerSerializer>
Field的属性描述,还有很多,例如:
<Field>
<ID>Code</ID>
< Name > mc</ Name >
<Title>代码</Title>
<Type>String</Type>
<Save></Save>
<Visible></Visible>
<Sql></Sql>
<Value></Value>
<Excel></Excel>
<UserInputValue></UserInputValue>
<null>false</null>
<nulltitle>代码不能为空,请输入!</nulltitle>
</Field>
控制文件命名空间
namespace WebMIS.ServiceModel { }
- 控制文件主类
/// <summary> /// 表示UI表单元素到查询字段的映射控制关系。 /// </summary> [System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))] [System.Serializable] public class WebMisController { //查询SQL private string _Select = ""; private string _TableName = "csm_DefineMaintenance"; //表明,查询表及表单用 private string _PrimaryKey = "ID"; //主键字段,例如ID,查询表的某条数据用于绑定到网页。 private string _PrimaryKeyValue = ""; //主键字段查找值 private string _UpdateWhere = ""; //更新条件 private string _DeleteWhere = ""; //删除条件 private CallbackFun _CallbackFun = null; //回调函数 private Field[] _Fields = null; //查询字段映射关系 private Field[] _Filter = null; //字段过滤映射关系 //其它未尽描述 // private System.Collections.Hashtable _Other = new System.Collections.Hashtable(); #region 属性... /// <summary> /// 查询语句。 /// </summary> public string Select { get { return _Select; } set { _Select = value; } } /// <summary> /// 数据库表名。 /// </summary> public string TableName { get { return _TableName; } set { _TableName = value; } } /// <summary> /// 主键名。 /// </summary> public string PrimaryKey { get { return _PrimaryKey; } set { _PrimaryKey = value; } } /// <summary> /// 主键值。 /// </summary> public string PrimaryKeyValue { get { return _PrimaryKeyValue; } set { _PrimaryKeyValue = value; } } /// <summary> /// 更新条件。 /// </summary> public string UpdateWhere { get { return _UpdateWhere; } set { _UpdateWhere = value; } } /// <summary> /// 删除条件。 /// </summary> public string DeleteWhere { get { return _DeleteWhere; } set { _DeleteWhere = value; } } /// <summary> /// 获取或设置回调函数。 /// </summary> public CallbackFun CallbackFun { get { return _CallbackFun; } set { _CallbackFun = value; } } /// <summary> /// 获取或设置字段。 /// </summary> public Field[] Fields { get { return _Fields; } set { _Fields = value; } } /// <summary> /// 获取或设置字段。 /// </summary> public Field[] Filter { get { return _Filter; } set { _Filter = value; } } /* /// <summary> /// 其它没描述完的。 /// </summary> public System.Collections.Hashtable Other { get { return _Other; } set { _Other = value; } } */ #endregion 属性... }
-
/// <summary> /// 表示UI表单元素到查询字段的映射控制关系。 /// </summary> [System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))] [System.Serializable] public class Field { #region 属性字段... private string _ID = ""; //表单元素ID //数据库 private string _Name = ""; //映射字段或查询字段名 private string _Type = ""; //数据保存时的数据类型 private bool _Save = true; //是否保存 //UI private string _Title = ""; //自动输出时的标签 private string _FormType = ""; //表单类型,如Input、Select,默认Input。 private string _Align = ""; //列对齐 private string _Width = ""; //列宽。 private bool _Visible = true; //界面元素是否可见 private bool _Null = true; //界面元素表单提交时是否允许为空。 private string _NullTitle = ""; //界面元素为空时,表单提交时提示。 //初始值 private string _Sql = ""; //通过SQL语句初始值 private string _Value = ""; //直接初始值 private string _Excel = ""; //EXCEL操作时,对应的行列,用半角英逗号文分隔,可以初始UI值。 private string _UserInputValue = "";//用户输入的值,强制优先于界面。。 //其它未尽描述 //private System.Collections.Hashtable _Tag = new System.Collections.Hashtable(); #endregion 属性字段... #region 属性... /// <summary> /// 获取或设置表单元素ID。 /// </summary> public string ID { get { return _ID; } set { _ID = value; } } #region DB... /// <summary> /// 获取或设置映射字段或查询字段名。 /// </summary> public string Name { get { return _Name; } set { _Name = value; } } /// <summary> /// 获取或设置数据保存时的数据类型。 /// </summary> public string Type { get { return _Type; } set { _Type = value; } } /// <summary> /// 获取或设置数据是否保存。 /// </summary> public bool Save { get { return _Save; } set { _Save = value; } } #endregion DB... #region UI... /// <summary> /// 获取或设置自动输出时的标签。 /// </summary> public string Title { get { return _Title; } set { _Title = value; } } /// <summary> /// 获取或设置表单类型,如Input、Select,默认Input。 /// </summary> public string FormType { get { return _FormType; } set { _FormType = value; } } /// <summary> /// 获取或设置界面元素是否可见。 /// </summary> public bool Visible { get { return _Visible; } set { _Visible = value; } } /// <summary> /// 获取或设置界面元素列对齐。 /// </summary> public string Align { get { return _Align; } set { _Align = value; } } /// <summary> /// 获取或设置界面元素宽度。 /// </summary> public string Width { get { return _Width; } set { _Width = value; } } /// <summary> /// 获取或设置界面元素是否允许不输入。 /// </summary> public bool Null { get { return _Null; } set { _Null = value; } } /// <summary> /// 获取或设置界面元素必须输入或选择时提示语。 /// </summary> public string NullTitle { get { return _NullTitle; } set { _NullTitle = value; } } #endregion UI... #region 初始... /// <summary> /// 获取或设置初始值的SQL语句。 /// </summary> public string Sql { get { return _Sql; } set { _Sql = value; } } /// <summary> /// 获取或设置初始值的默认值。 /// </summary> public string Value { get { return _Value; } set { _Value = value; } } /// <summary> /// 获取或设置EXCEL操作时,对应的行列,用半角英逗号文分隔,可以初始UI值。 /// </summary> public string Excel { get { return _Excel; } set { _Excel = value; } } /// <summary> /// 获取或设置用户输入值,强制优先于界面。 /// </summary> public string UserInputValue { get { return _UserInputValue; } set { _UserInputValue = value; } } #endregion 初始... /* /// <summary> /// 其它没描述完的。 /// </summary> public System.Collections.Hashtable Tag { get { return _Tag; } set { _Tag = value; } } */ #endregion 属性... #region 构造函数... /// <summary> /// 创建类的新实例。 /// </summary> public Field() { } /// <param name="elementID">元素ID,如果不指定字段名,默认与元素名相同。</param> public Field(string elementID):this() { _ID = elementID; _Name = elementID; _Title = elementID; } /// <param name="name">查询字段名,如果不指定字段名,默认与元素名相同。</param> public Field(string elementID, string name) : this() { _ID = elementID; _Name = name; _Title = name; } #endregion 构造函数... }
- 控制文件回调函数类
/// <summary> /// 表示回调函数。 /// </summary> [System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))] [System.Serializable] public class CallbackFun { private string _AfterLoad; private string _AfterDelete; /// <summary> /// 获取或设置加载成功后回调函数名。 /// </summary> public string AfterLoad { get { return _AfterLoad; } set { _AfterLoad = value; } } /// <summary> /// 获取或设置删除数据成功后回调函数名。 /// </summary> public string AfterDelete { get { return _AfterDelete; } set { _AfterDelete = value; } } }
声明:本文版权为长江支流周方勇所有,如需转载,请保留完整的内容及出处。
作者:长江支流flygoldfish@163.com微信:winxin8001234567
连载:(三)循序渐进,通过XML配置,实现通用于WinForm(.Net)、WebForm(Asp.Net+JQuery+EasyUI)表单、报表--控制文件