標籤:報表 表單 asp.net jquery .net快速開發
連載:(三)循序漸進,通過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 [email protected]</value> </UpdateWhere> <DeleteWhere> <value>Where [email protected] </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; } } }
聲明:本文著作權為長江支流周方勇所有,如需轉載,請保留完整的內容及出處。
長江支流[email protected]:winxin8001234567
連載:(三)循序漸進,通過XML配置,實現通用於WinForm(.Net)、WebForm(Asp.Net+JQuery+EasyUI)表單、報表--控制檔案