ext.net 开发学习之复杂模板板块 (叁)
一直 在纳闷 十一放假七天,另一个更重要的节日春节 为什么也只有七天!!!没休息够 就要奔向远方……
言归正传,之前我们叁一直在捣鼓着ext.net。经过近两周的开发,大体完成了部分效果。现在和大家分享下,另外园中前辈,高手如云。也希望看到了,觉得不妥的地方。麻烦 赐教 …… 谢谢
因为项目需求,所有的页面功能、展示效果等等,都通过后台cs生成,所以难免在速度上有点……所以今天 奉上这个小作品。就是想抛砖引玉 ……大家有没有好的建议和想法
一、主页:
二、邮件管理
三、公司员工
四、员工详情
部分代码
这员工列表页面代码
public partial class EmployeeDetail : System.Web.UI.Page { #region Files /// <summary> /// 模块使用表集合 /// </summary> private DataTable mouldTable; /// <summary> /// 模块使用字段集合 /// </summary> private DataTable fieldTable; /// <summary> /// 标签页个数 /// </summary> //private int panlCount; /// <summary> /// 每页分组数 /// </summary> //private int panlGroupCount; /// <summary> /// 每行控件数 /// </summary> //private int rowColumnCount; /// <summary> /// 结构Panel设置 /// </summary> private DataTable strucPanelSetTable; /// <summary> /// 结构Group设置 /// </summary> private DataTable strucGroupSetTable; /// <summary> /// 结构表 /// </summary> private DataTable strucTable; private StringBuilder dataCommand; private DataTable sourceDataTable; private string param; private DataTable depDataTable; #endregion protected void Page_Load(object sender, EventArgs e) { param = "EmpID='" + Request.QueryString["EmpID"] + "'"; mouldTable = MouldDao.GetMouldTables("BF019", "1"); fieldTable = MouldDao.GetMouldFileds("BF019", "1"); strucPanelSetTable = CreatePageDao.GetStrucPanelSetTable("BF019"); strucGroupSetTable = CreatePageDao.GetStrucGroupSetTable("BF019"); strucTable = CreatePageDao.GetStrucTable("BF019"); if (strucPanelSetTable == null || strucPanelSetTable.Rows.Count <= 0) return; dataCommand = MouldDao.GetDataCommand(mouldTable, fieldTable); dataCommand.Append(" WHERE " + param); sourceDataTable = MouldDao.GetDataSource(dataCommand.ToString()); SetPanel(strucPanelSetTable, "pnlName");//数据源列名(Tab标题) //新建按钮 打开新页面 (X.GetCtl("btnTopBarAdd") as Ext.Net.Button).Listeners.Click.Handler = "addTab('addEmployeeInfo', 'EmployeeDetailAdd.aspx','新建员工');";//打开新窗口 //"Ext.net.DirectMethods.TopBarClick('新建');";// 执行按钮事件 } #region 生成页面 /// <summary> /// 设置主页面 /// </summary> /// <param name="dtPanel">表</param> /// <param name="strRowTitle">表dtPanel:列名</param> public void SetPanel(DataTable dtPanel, string strRowTitle) { Ext.Net.Panel NorthPanel = new Ext.Net.Panel(); // Make TabPanel for Center Region TabPanel center = SetTabPanel(); // Make Tab Ext.Net.Panel panel; /****************************************************begin 设置导航菜单****************************************************/ string[] strList = { "新建", "编辑", "取消|0", "打开|0", "删除", "转抄|0", "打印", "附件|0", "提交|0", "通过|0", "移交|0", "获取|0", "驳回|0", "操作记录|0", "关联|0" }; NorthPanel.TopBar.Add(CreateControls.CreateToolBar(strList, 1)); /*******************************************************end****************************************************************/ /*******************************begin tabpanel 员工详情目前两个tabpanel 基本信息、高级设置*******************************/ for (int i = 0; i < dtPanel.Rows.Count; i++) { panel = new Ext.Net.Panel(); panel.ID = "panel" + i; panel.Title = dtPanel.Rows[i][strRowTitle].ToString(); panel.Border = false; center.Items.Add(panel); SetPanelItems(panel, i); } /**************************************************************end**************************************************************/ BorderLayout bl = new BorderLayout(); bl.North.Items.Add(NorthPanel); bl.Center.Items.Add(center); Viewport vp = new Viewport(); vp.ContentControls.Add(bl); phContent.Controls.Add(vp); } /// <summary> /// 设置 第一个tabpanel : 内容控件 上下panel /// </summary> /// <param name="center">主panel</param> private void SetPanelItems(Ext.Net.Panel center, int pnlIndex) { /*************************************************NORTH REGION*************************************************/ // Make Panel for South Region Ext.Net.Panel north = new Ext.Net.Panel(); north.ID = "NorthPanel" + pnlIndex; //north.Title = "North"; north.Height = 500; north.AutoScroll = true; north.Collapsible = true; north.CollapseMode = CollapseMode.Mini; north.Items.Add(GetControls(pnlIndex)); center.Items.Add(north); /*************************************************SOUTH REGION*************************************************/ DataRow[] itemPanel = strucTable.Select("ParSQLNo=" + (pnlIndex + 1)); if (itemPanel.Length > 0) SetPanel_TablPanel(itemPanel, "StrucName", center); } /// <summary> /// 获取panle中用户详情control /// </summary> /// <param name="pnlIndex"></param> /// <returns></returns> public TableLayout GetControls(int pnlIndex) { TableLayout tableLay; tableLay = GetTable_TableLayout(1, 2, pnlIndex); return tableLay; } /// <summary> /// TableLayout /// </summary> /// <param name="view"></param> /// <param name="rowIndex"></param> /// <param name="mouldId"></param> /// <param name="panlId"></param> /// <param name="groupId"></param> public TableLayout GetTable_TableLayout(int iRowLeft, int iRowRight, int pnlIndex) { // Build all the Panels which will fill the Table Cells. TableLayout tableLay = new TableLayout() { ID = "tblMain" + pnlIndex, Columns = 2 }; Ext.Net.Panel panel1 = new Ext.Net.Panel(); panel1.Width = 600; panel1.Height = 600; panel1.ID = "panelLeft" + pnlIndex; panel1.Border = false; Ext.Net.Panel panel2 = new Ext.Net.Panel(); panel2.Width = 300; panel2.Height = 600; panel2.ID = "panelRight" + pnlIndex; panel2.Border = false; RowLayout row1 = new RowLayout(); RowLayout row2 = new RowLayout(); LayoutRow rowLay1; LayoutRow rowLay2; Ext.Net.Panel panelChild; // RowLayout _tbAcreages = new RowLayout() { ID = "tbAcreages" + pnlIndex, }; for (int i = 0; i < strucGroupSetTable.Rows.Count; i++)// { _tbAcreages = GetTable_RowLayout(_tbAcreages, i, "BF019", strucPanelSetTable.Rows[pnlIndex]["FUID"].ToString(), strucGroupSetTable.Rows[i]["FUID"].ToString()); } // //left for (int i = 0; i < iRowLeft; i++) { rowLay1 = new LayoutRow(); panelChild = new Ext.Net.Panel(); panelChild.AutoHeight = true; panelChild.Width = 600; panelChild.ID = "panelChildL" + i + pnlIndex.ToString(); panelChild.AutoWidth = true; panelChild.Items.Add(_tbAcreages); rowLay1.Items.Add(panelChild); row1.Rows.Add(rowLay1); panelChild.Border = false; } ////right for (int i = 0; i < iRowRight; i++) { rowLay2 = new LayoutRow(); panelChild = new Ext.Net.Panel(); panelChild.AutoHeight = true; panelChild.Html = ""; panelChild.ID = "panelChildR" + i + pnlIndex.ToString(); panelChild.AutoWidth = true; rowLay2.Items.Add(panelChild); row2.Rows.Add(rowLay2); panelChild.Border = false; } panel1.Items.Add(row1); panel2.Items.Add(row2); Cell cell1 = new Cell(); cell1.Items.Add(panel1); Cell cell2 = new Cell(); cell2.Items.Add(panel2); tableLay.Cells.Add(cell1); tableLay.Cells.Add(cell2); return tableLay; } /// <summary> /// RowLayout /// </summary> /// <param name="tableLayout"></param> /// <param name="rowIndex"></param> /// <param name="mouldId"></param> /// <param name="panlId"></param> /// <param name="groupId"></param> /// <returns></returns> private RowLayout GetTable_RowLayout(RowLayout tableLayout, int rowIndex, string mouldId, string panlId, string groupId) { DataRow[] drList = fieldTable.Select("IsShow=1 and PnlFUID='" + panlId + "' and GroupFUID='" + groupId + "'", "ControlOrderNo"); if (drList.Length > 0) { Ext.Net.Panel pnlLeft = new Ext.Net.Panel() { Padding = 15, ID = "pnlLeft" + rowIndex, AutoHeight = true, Layout = "Form", Border = false }; Ext.Net.Panel pnlRight = new Ext.Net.Panel() { Padding = 15, ID = "pnlRight" + rowIndex, AutoHeight = true, Layout = "Form", Border = false }; for (int i = 0; i < drList.Length; i++) { if (i % 2 == 0) { Component item = CreateControls.GetControls(drList[i],sourceDataTable.Rows[0][drList[i]["FieldAlias"].ToString()]); pnlLeft.Items.Add(item); } else { Component item = CreateControls.GetControls(drList[i], sourceDataTable.Rows[0][drList[i]["FieldAlias"].ToString()]); pnlRight.Items.Add(item); } } LayoutRow _layoutRow = new LayoutRow(); //_layoutRow.RowHeight = decimal.Parse("0.2"); FormPanel _fp = new FormPanel() { ID = string.Format("fpRowsForm{0}", rowIndex), Layout = "Column", Height = 40 * (drList.Length / 2 + 1), //Border = false }; _layoutRow.Items.Add(_fp); _fp.Items.Add(pnlLeft); _fp.Items.Add(pnlRight); tableLayout.Rows.Add(_layoutRow); } return tableLayout; } #endregion #region 设置TabPanel /// <summary> ///设置Panel 子panel中添加tablPanel /// </summary> /// <param name="dtPanel">根据table值添加tablepanel </param> /// <param name="strRowTitle">title</param> /// <param name="panelContent"></param> private void SetPanel_TablPanel(DataRow[] itemPanelList, string strRowTitle, Ext.Net.Panel panelContent) { // Make TabPanel for Center Region TabPanel center = new TabPanel(); center.ID = "tabCenterChild"; center.Title = ""; center.ActiveTabIndex = 0; center.Height = 200; // Make Tab Ext.Net.Panel panel; for (int i = 0; i < itemPanelList.Length; i++) { panel = new Ext.Net.Panel(); panel.ID = "panelChild" + i; panel.Title = itemPanelList[i][strRowTitle].ToString(); panel.Border = false; DataTable mould = MouldDao.GetMouldTables("BF019", itemPanelList[i]["SQLNo"].ToString()); DataTable field = MouldDao.GetMouldFileds("BF019", itemPanelList[i]["SQLNo"].ToString()); dataCommand = MouldDao.GetDataCommand(mould, field); dataCommand.Append(" WHERE " + param); DataTable source = MouldDao.GetDataSource(dataCommand.ToString()); panel.Items.Add(CreateControls.CreateGridePanel(field, source)); center.Items.Add(panel); } panelContent.Items.Add(center); } private void BindColumn(GridPanel gv, JsonReader jsrd, DataTable sourceDt, bool isRefresh) { DataRow[] drList = sourceDt.Select("IsListShow=1"); RecordField rf = null; Column col = null; for (int i = 0; i < drList.Length; i++) { rf = new RecordField(); rf.Mapping = drList[i]["FieldAlias"].ToString(); if (drList[i]["FieldType"].ToString() == "nvarchar" || drList[i]["FieldType"].ToString() == "varchar") rf.Type = RecordFieldType.String; else if (drList[i]["FieldType"].ToString() == "int") rf.Type = RecordFieldType.Int; else if (drList[i]["FieldType"].ToString() == "datetime") rf.Type = RecordFieldType.Date; else if (drList[i]["FieldType"].ToString() == "bit") rf.Type = RecordFieldType.Boolean; else if (drList[i]["FieldType"].ToString() == "numeric") rf.Type = RecordFieldType.Float; if (!isRefresh) { col = new Column(); col.Header = drList[i]["FieldCaption"].ToString(); col.DataIndex = drList[i]["FieldAlias"].ToString(); col.Width = Int32.Parse(drList[i]["ColWidth"].ToString()); gv.AddColumn(col); } jsrd.Fields.Add(rf); } } /// <summary> /// 设置TabPanel /// </summary> /// <param name="strID">ID</param> /// <param name="strTitle">标题</param> /// <returns></returns> public TabPanel SetTabPanel(string strID, string strTitle) { // Make TabPanel for Center Region TabPanel center = new TabPanel(); center.ID = strID; center.Title = strTitle; center.ActiveTabIndex = 0; return center; } /// <summary> /// Make TabPanel 主页面 /// </summary> /// <returns></returns> public TabPanel SetTabPanel() { // Make TabPanel for Center Region TabPanel center = new TabPanel(); center.ID = "tabCenter"; //center.Title = ""; center.Border = false; center.Split = false; center.ActiveTabIndex = 0; return center; } #endregion #region 操作方法 /// <summary> /// 员工详情 topbar 工具栏 /// </summary> /// <param name="strOpearate"></param> [DirectMethod] public void TopBarClick(string strOpearate) { btnUpdateEmInfos(strOpearate, Request.QueryString["EmpID"]); //X.Msg.Alert("单击了员工详情:", strOpearate).Show(); } protected void btnUpdateEmInfos(string strOperate, string strEmpID) { if (strOperate == "新建") { (X.GetCtl("btnTopBarEdit") as Ext.Net.Button).Disabled = true; (X.GetCtl("btnTopBarSave") as Ext.Net.Button).Disabled = false; (X.GetCtl("btnTopBarCancel") as Ext.Net.Button).Disabled = false; (X.GetCtl("btnTopBarAdd") as Ext.Net.Button).Disabled = true; (X.GetCtl("txtEmpID") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtNickName") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtENEmpName") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtCNEmpName") as Ext.Net.TextField).Text = ""; (X.GetCtl("cmbSex") as Ext.Net.ComboBox).SelectedItem.Value = "--请选择--"; (X.GetCtl("txtAssistant") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtLeader") as Ext.Net.TextField).Text = ""; (X.GetCtl("cmbJobs") as Ext.Net.ComboBox).SelectedItem.Value = "--请选择--"; (X.GetCtl("txtDeptID") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtHome_Add") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtPassport") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtNativePlace") as Ext.Net.TextField).Text = "";//籍贯 (X.GetCtl("txtMobile1") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtMobile2") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtQQ") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtMSN") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtSkype") as Ext.Net.TextField).Text = "";//网络电话 (X.GetCtl("txtEmail") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtHome_Tel1") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtHome_Tel2") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtHome_Zip") as Ext.Net.TextField).Text = ""; (X.GetCtl("txtOtherLink") as Ext.Net.TextField).Text = ""; /*********************** 高级设置 ***********************/ (X.GetCtl("txtLoginUser") as Ext.Net.TextField).Text = ""; (X.GetCtl("ckbEnableLogin") as Ext.Net.Checkbox).Checked = false; (X.GetCtl("txtMinPassSize") as Ext.Net.TextField).Text = "";//密码最小长度 (X.GetCtl("txtDogKeyNeed") as Ext.Net.TextField).Text = "";//硬加密登录 (X.GetCtl("ckbEnabledDynamicPass") as Ext.Net.Checkbox).Checked = false;//动态密码 (X.GetCtl("ckbChangePassFirstLogin") as Ext.Net.Checkbox).Checked = false; (X.GetCtl("ckbEnabledBS") as Ext.Net.Checkbox).Checked = false; (X.GetCtl("ckbEnabledRemote") as Ext.Net.Checkbox).Checked = false; //允许远程登录 (X.GetCtl("dtJoinDate") as Ext.Net.DateField).Text = ""; (X.GetCtl("dtLeaveDate") as Ext.Net.DateField).Text = ""; (X.GetCtl("ckbIsCanUse") as Ext.Net.Checkbox).Checked = false; Session["Add"] = "add"; } else if (strOperate == "编辑") { (X.GetCtl("btnTopBarSave") as Ext.Net.Button).Disabled = false; (X.GetCtl("btnTopBarCancel") as Ext.Net.Button).Disabled = false; (X.GetCtl("btnTopBarEdit") as Ext.Net.Button).Disabled = true; Session["Add"] = null; } else if (strOperate == "提交") { try { if (Session["Add"] != null && Session["Add"].ToString() == "add") strEmpID = ""; string strFlag = UpdateEmInfos(strEmpID); X.Msg.Alert("提示:", strFlag == "success" ? "提交成功" : ("请输入:" + strFlag)).Show(); } catch (Exception ex) { X.Msg.Alert("提示:", ex.Message).Show(); } } else if (strOperate == "取消") { (X.GetCtl("btnTopBarSave") as Ext.Net.Button).Disabled = true; (X.GetCtl("btnTopBarCancel") as Ext.Net.Button).Disabled = true; (X.GetCtl("btnTopBarEdit") as Ext.Net.Button).Disabled = false; (X.GetCtl("btnTopBarAdd") as Ext.Net.Button).Disabled = false; Session["Add"] = null; } else X.Msg.Alert("提示:", "该功能未实现").Show(); } /// <summary> /// 根据用户ID 增加、修改用户信息 /// </summary> /// <param name="strEmpID">用户ID为空:新增; 不为空:根据ID修改用户信息</param> public string UpdateEmInfos(string strEmpID) { BfEMP employee; if (!string.IsNullOrEmpty(strEmpID)) employee = new BfEMP(strEmpID); else { employee = new BfEMP(); employee.EmpID = Request.Form["txtEmpID"]; } if (!string.IsNullOrEmpty(strEmpID) && strEmpID != Request.Form["txtEmpID"]) return "员工号"; Ext.Net.Panel panel = new Ext.Net.Panel(); employee.NickName = Request.Form["txtNickName"];// (this.form1.FindControl("txtNickName") as TextField).Text; // employee.ENEmpName = Request.Form["txtENEmpName"]; string strCnName = Request.Form["txtCNEmpName"]; if (string.IsNullOrEmpty(strCnName)) return "员工全名"; employee.CNEmpName = Request.Form["txtCNEmpName"]; string strSex = (X.GetCtl("cmbSex") as ComboBox).SelectedItem.Value; if (string.IsNullOrEmpty(strSex)) return "性别"; employee.Sex = Convert.ToInt32(strSex == "" ? "0" : strSex); employee.Assistant = Request.Form["txtAssistant"]; employee.Leader = Request.Form["txtLeader"]; string strJobs = (X.GetCtl("cmbJobs") as ComboBox).SelectedItem.Value; if (string.IsNullOrEmpty(strJobs)) return "职位"; employee.Jobs = strJobs == "" ? "" : strJobs; employee.DeptID = Request.Form["txtDeptID"]; //Request.Form["dtBirthDay"]; //无 employee.Degree = Request.Form["txtDegree"]; employee.HomeAdd = Request.Form["txtHome_Add"]; employee.IDCard = Request.Form["txtIDCard"]; employee.Passport = Request.Form["txtPassport"]; employee.NativePlace = Request.Form["txtNativePlace"];//籍贯 employee.Mobile1 = Request.Form["txtMobile1"]; employee.Mobile2 = Request.Form["txtMobile2"]; employee.Qq = Request.Form["txtQQ"]; employee.Msn = Request.Form["txtMSN"]; employee.Skype = Request.Form["txtSkype"];//网络电话 employee.Email = Request.Form["txtEmail"]; employee.HomeTel1 = Request.Form["txtHome_Tel1"]; employee.HomeTel2 = Request.Form["txtHome_Tel2"]; employee.HomeZip = Request.Form["txtHome_Zip"]; employee.OtherLink = Request.Form["txtOtherLink"]; /*********************** 高级设置 ***********************/ employee.LoginUser = Request.Form["txtLoginUser"];//登录帐号 if (X.GetCtl("ckbEnableLogin") != null && (X.GetCtl("ckbEnableLogin") as Checkbox).Checked) employee.EnableLogin = 1;// (X.GetCtl("ckbEnableLogin") as Checkbox).Checked ? 1 : 0;//允许登录ckbEnableLogin else employee.EnableLogin = 0; if (!string.IsNullOrEmpty(Request.Form["txtMinPassSize"]))//硬加密登录 employee.MinPassSize = Convert.ToInt32(Request.Form["txtMinPassSize"]);//密码最小长度 if (!string.IsNullOrEmpty(Request.Form["txtDogKeyNeed"]))//硬加密登录 employee.DogKeyNeed = Convert.ToInt32(Request.Form["txtDogKeyNeed"]); if (X.GetCtl("ckbEnabledDynamicPass") != null && (X.GetCtl("ckbEnabledDynamicPass") as Checkbox).Checked) employee.EnabledDynamicPass = 1;// (X.GetCtl("ckbEnabledDynamicPass") as Checkbox).Checked ? 1 : 0;//动态密码 else employee.EnabledDynamicPass = 0; if (X.GetCtl("ckbChangePassFirstLogin") != null && (X.GetCtl("ckbChangePassFirstLogin") as Checkbox).Checked) employee.ChangePassFirstLogin = 1;// (X.GetCtl("ckbChangePassFirstLogin") as Checkbox).Checked ? 1 : 0; //初次变更密码 else employee.ChangePassFirstLogin = 0; if (X.GetCtl("ckbEnabledBS") != null && (X.GetCtl("ckbEnabledBS") as Checkbox).Checked) employee.EnabledBS = 1;// (X.GetCtl("ckbEnabledBS") as Checkbox).Checked ? 1 : 0; //允许BS登录 else employee.EnabledBS = 0; if (X.GetCtl("ckbEnabledRemote") != null && (X.GetCtl("ckbEnabledRemote") as Checkbox).Checked) employee.EnabledRemote = 1;// (X.GetCtl("ckbEnabledRemote") as Checkbox).Checked ? 1 : 0; //允许远程登录 else employee.EnabledRemote = 0; if (!string.IsNullOrEmpty(Request.Form["dtJoinDate"])) employee.JoinDate = Convert.ToDateTime(Request.Form["dtJoinDate"]); else employee.JoinDate = null; if (!string.IsNullOrEmpty(Request.Form["dtLeaveDate"])) employee.LeaveDate = Convert.ToDateTime(Request.Form["dtLeaveDate"]); else employee.LeaveDate = null; if (X.GetCtl("ckbIsCanUse") != null && (X.GetCtl("ckbIsCanUse") as Checkbox).Checked) employee.IsCanUse = 1;// (X.GetCtl("ckbIsCanUse ") as Checkbox).Checked ? 1 : 0;//离职 else employee.IsCanUse = 0; employee.Save(); return "success"; } /// <summary> /// 根据用户ID删除用户信息 /// </summary> /// <param name="strEmpID"></param> public void DeleteEmInfos(string strEmpID) { BfEMP employee = new BfEMP(strEmpID); } #endregion #region 生成数据更新window protected void StoreQGD_Refresh(object sender, StoreRefreshDataEventArgs e) { fieldTable = MouldDao.GetMouldFileds("BF019", "1"); this.StoreQGD.DataSource = CreateControls.GetSourceTable(fieldTable, "Jobs"); this.StoreQGD.DataBind(); } protected void StoreQGD_BeforeChanged(object sender, BeforeStoreChangedEventArgs e) { string json = e.DataHandler.JsonData; StoreDataHandler dataHandler = new StoreDataHandler(json); ChangeRecords<BfJob> data = dataHandler.ObjectData<BfJob>(); foreach (BfJob test in data.Created) { BfJob bll = test; bll.Save(); } foreach (BfJob item in data.Updated) { BfJob bll = item; bll.Save(); } this.StoreQGD.RefreshData += new Store.AjaxRefreshDataEventHandler(StoreQGD_RefreshData); } void StoreQGD_RefreshData(object sender, StoreRefreshDataEventArgs e) { fieldTable = MouldDao.GetMouldFileds("BF019", "1"); this.StoreQGD.DataSource = CreateControls.GetSourceTable(fieldTable, "Jobs"); this.StoreQGD.DataBind(); } #endregion }
公共部分 生成text checkbox combocox
public class CreateControls
{
public static Store CreateStore(string id, string valueField, string displayField, DataTable sourceTable)
{
Store st = new Store() { ID = "store" + id };
JsonReader jsrd = new JsonReader();
st.Reader.Add(jsrd);
RecordField rfValue = new RecordField() { Mapping = valueField, Type = RecordFieldType.String };
RecordField rfdisplay = new RecordField() { Mapping = displayField, Type = RecordFieldType.String };
jsrd.Fields.Add(rfValue);
jsrd.Fields.Add(rfdisplay);
st.DataSource = sourceTable;
st.DataBind();
return st;
}
public static DataTable GetSourceTable(DataTable fieldTable,string fieldAlias)
{
DataRow[] controlRow = fieldTable.Select("FieldAlias='" + fieldAlias+"'");
string commandSql = controlRow[0]["SearchSQL"].ToString();
commandSql = "select " + controlRow[0]["ValueField"].ToString() + ", " + controlRow[0]["DisplayField"].ToString() + " from " + controlRow[0]["SetTableName"].ToString();
QueryCommand qc = new InlineQuery().GetCommand(commandSql);
DataTable sourceTable = DataService.GetDataSet(qc).Tables[0];
return sourceTable;
}
private static DataTable GetSourceTable(DataRow controlRow)
{
string commandSql = controlRow["SearchSQL"].ToString();
commandSql = "select " + controlRow["ValueField"].ToString() + ", " + controlRow["DisplayField"].ToString() + " from " + controlRow["SetTableName"].ToString();
QueryCommand qc = new InlineQuery().GetCommand(commandSql);
DataTable sourceTable = DataService.GetDataSet(qc).Tables[0];
return sourceTable;
}
private static DataTable GetSexSourceTable()
{
DataTable dataSource = new DataTable();
dataSource.Columns.Add("ID");
dataSource.Columns.Add("Sex");
DataRow dr = dataSource.NewRow();
dr["ID"] = "0";
dr["Sex"] = "男";
DataRow dr1 = dataSource.NewRow();
dr1["ID"] = "1";
dr1["Sex"] = "女";
dataSource.Rows.Add(dr);
dataSource.Rows.Add(dr1);
return dataSource;
}
public static Component GetControls(DataRow controlRow, object value)
{
switch (controlRow["ControlType"].ToString())
{
case "TcxDBCheckBox":
return CreateCheckbox(controlRow, value);
case "TFMDBLookupComboBox":
return CreateCombox(controlRow, true, value);
case "TCxDBDateEdit":
return CreateDateField(controlRow, value);
case "TcxDBMemo":
return CrearteTextArea(controlRow, value);
default:
return CreateTextField(controlRow, value);
}
}
private static Label CreateLabel(string lblId, string lblText)
{
Label lbl = new Label();
lbl.ID = "lbl" + lblId;
lbl.Text = lblText;
return lbl;
}
/// <summary>
/// 创建TextField控件
/// </summary>
/// <param name="textId"></param>
/// <param name="textFildLabel"></param>
/// <returns></returns>
private static TextField CreateTextField(DataRow controlRow, object value)
{
TextField txt = new TextField();
txt.ID = "txt" + controlRow["FieldAlias"].ToString();
txt.Text = value.ToString();
if (controlRow["IsNotNull"].ToString().ToLower() == "true")
{
txt.FieldLabel = controlRow["FieldCaption"].ToString() + "<font color='red'>*</font>";
txt.AllowBlank = false;
}
else
txt.FieldLabel = controlRow["FieldCaption"].ToString();
return txt;
}
private static Checkbox CreateCheckbox(DataRow controlRow, object value)
{
Checkbox ckb = new Checkbox();
ckb.ID = "ckb" + controlRow["FieldAlias"].ToString();
ckb.BoxLabel = controlRow["FieldCaption"].ToString();
ckb.LabelAlign = LabelAlign.Right;
//ckb.Checked = string.IsNullOrEmpty(value.ToString()) ? false : (bool)value;
if (value.ToString() == "1" || value.ToString().ToLower() == "true")
ckb.Checked = true;
return ckb;
}
private static ComboBox CreateCombox(DataRow controlRow, bool isGrid, object value)
{
//Panel pnl = new Panel() { ID = "pnlCmb" + controlRow["FieldAlias"].ToString(), Cls = "btn-panel", Border = false };
//TableLayout tbLayout = new TableLayout() { Columns = 2 };
//pnl.Items.Add(tbLayout);
ComboBox cmb = new ComboBox();
DataTable sourceTable;
Store st;
if (!string.IsNullOrEmpty(controlRow["SearchSQL"].ToString()) || (!string.IsNullOrEmpty(controlRow["ValueField"].ToString()) && !string.IsNullOrEmpty(controlRow["DisplayField"].ToString())))
{
sourceTable = GetSourceTable(controlRow);
st = CreateStore(controlRow["FieldAlias"].ToString(), controlRow["ValueField"].ToString(), controlRow["DisplayField"].ToString(), sourceTable);
}
else
{
sourceTable = GetSexSourceTable();
st = CreateStore("Sex", "ID", "Sex", sourceTable);
}
cmb.Store.Add(st);
if (controlRow["FieldAlias"].ToString().ToLower() == "sex")
{
controlRow["ValueField"] = "ID";
controlRow["DisplayField"] = "Sex";
}
cmb.ID = "cmb" + controlRow["FieldAlias"].ToString();
cmb.EmptyText = "--请选择--";
cmb.ValueField = controlRow["ValueField"].ToString();
cmb.DisplayField = controlRow["DisplayField"].ToString();
cmb.TypeAhead = true;
cmb.ForceSelection = true;
cmb.MinChars = 1;
cmb.HiddenName = controlRow["DisplayField"].ToString();
cmb.Grow = true;
//cmb.Width = 210;
if (controlRow["IsNotNull"].ToString().ToLower() == "true")
{
cmb.FieldLabel = controlRow["FieldCaption"].ToString() + "<font color='red'>*</font>";
cmb.AllowBlank = false;
}
else
cmb.FieldLabel = controlRow["FieldCaption"].ToString();
if (isGrid)
{
cmb.ListWidth = 270;
cmb.ItemSelector = "tr.list-item";
cmb.PageSize = 10;
cmb.Template.Html = "<tpl for=\".\"><tpl if=\"[xindex] == 1\"><table class=\"cbStates-list\"><tr><th>" + cmb.ValueField + "</th><th>" + cmb.DisplayField + "</th></tr></tpl><tr class=\"list-item\"><td style=\"padding:3px 0px;\">{" + cmb.ValueField + "}</td><td>{" + cmb.DisplayField + "}</td></tr><tpl if=\"[xcount-xindex]==0\"></table></tpl></tpl>";
if (cmb.ID.Contains("Sex"))
{
FieldTrigger fieldTrigger = new FieldTrigger() { Icon = TriggerIcon.Clear};
cmb.Triggers.Add(fieldTrigger);
cmb.Listeners.BeforeQuery.Handler = "this.triggers[0][ this.getRawValue().toString().length == 0 ? 'hide' : 'show']();";
cmb.Listeners.TriggerClick.Handler = "if (index == 0) { this.focus().clearValue(); trigger.hide();}";
cmb.Listeners.Select.Handler = "this.triggers[0].show();";
}
else
{
FieldTrigger fieldTrigger = new FieldTrigger() { Icon = TriggerIcon.Search};
cmb.Triggers.Add(fieldTrigger);
cmb.Listeners.TriggerClick.Handler = "#{Window1}.show();";
cmb.Listeners.Select.Handler = "this.triggers[0].show();";
}
}
//Cell cellCmb = new Cell();
//cellCmb.Items.Add(cmb);
//Cell cellBtn = new Cell();
//cellBtn.Items.Add(CreateButton(controlRow["FieldAlias"].ToString(), "...", ""));
//tbLayout.Cells.Add(cellCmb);
//tbLayout.Cells.Add(cellBtn);
BindSelected(cmb, value.ToString(), sourceTable);
return cmb;
}
private static void BindSelected(ComboBox cmb, string itemValue, DataTable sourceTable)
{
int SelectedIndex = -1;
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
if (sourceTable.Rows[i][0].ToString().Trim() == itemValue)
{
SelectedIndex = i;
break;
}
}
cmb.SelectedIndex = SelectedIndex;
}
private static DateField CreateDateField(DataRow controlRow, object value)
{
DateField dateField = new DateField();
dateField.ID = "dt" + controlRow["FieldAlias"].ToString();
dateField.Value = value;
dateField.Format = "yyyy年MM月dd日";
dateField.Width = 128;
if (controlRow["IsNotNull"].ToString().ToLower() == "true")
{
dateField.AllowBlank = false;
dateField.FieldLabel = controlRow["FieldCaption"].ToString() + "<font color='red'>*</font>";
}
else
dateField.FieldLabel = controlRow["FieldCaption"].ToString();
return dateField;
}
private static TextArea CrearteTextArea(DataRow controlRow, object value)
{
TextArea txtArea = new TextArea();
txtArea.ID = "dt" + controlRow["FieldAlias"].ToString();
txtArea.Text = value.ToString();
if (controlRow["IsNotNull"].ToString().ToLower() == "true")
{
txtArea.AllowBlank = false;
txtArea.FieldLabel = controlRow["FieldCaption"].ToString() + "<font color='red'>*</font>";
}
else
txtArea.FieldLabel = controlRow["FieldCaption"].ToString();
return txtArea;
}
public static Button CreateButton(string btnId, string btnName, string btnType)
{
Button btn = new Button();
btn.ID = "btn" + btnId;
btn.Text = btnName;
if (btnType == "cmbBtn")
{
btn.Listeners.Click.Handler = "#{winSelect}.show();";
}
btn.CommandArgument = "store" + btnId;
btn.CommandName = "ShowWindow";
return btn;
}
public static GridPanel CreateGridePanel(DataTable fieldTable, DataTable sourceDataTable)
{
GridPanel gp = new GridPanel
{
Border = false,
StripeRows = true,
TrackMouseOver = true,
AutoHeight = true,
Store =
{
CreateStore(fieldTable,sourceDataTable)
},
LoadMask = { ShowMask = true }
,
BottomBar =
{
new PagingToolbar{ PageSize=13,StoreID="Store1"}
},
SelectionModel =
{
new RowSelectionModel { SingleSelect = true }
}
};
Column col;
for (int i = 0; i < fieldTable.Rows.Count; i++)
{
if (fieldTable.Rows[i]["IsListShow"].ToString() == "1" || fieldTable.Rows[i]["IsListShow"].ToString().ToLower() == "true")
{
col = new Column();
col.Header = fieldTable.Rows[i]["FieldCaption"].ToString();
col.DataIndex = fieldTable.Rows[i]["FieldAlias"].ToString();
col.Width = Int32.Parse(string.IsNullOrEmpty(fieldTable.Rows[i]["ColWidth"].ToString()) ? "80" : fieldTable.Rows[i]["ColWidth"].ToString());
gp.ColumnModel.Columns.Add(col);
}
}
return gp;
}
private static Store CreateStore(DataTable fieldTable, DataTable sourceDataTable)
{
Store st = new Store();
st.ID = "Store1";
JsonReader jsrd = new JsonReader();
st.Reader.Add(jsrd);
RecordField rf = null;
for (int i = 0; i < fieldTable.Rows.Count; i++)
{
rf = new RecordField();
rf.Mapping = fieldTable.Rows[i]["FieldAlias"].ToString();
if (fieldTable.Rows[i]["FieldType"].ToString() == "nvarchar" || fieldTable.Rows[i]["FieldType"].ToString() == "varchar")
rf.Type = RecordFieldType.String;
else if (fieldTable.Rows[i]["FieldType"].ToString() == "int")
rf.Type = RecordFieldType.Int;
else if (fieldTable.Rows[i]["FieldType"].ToString() == "datetime")
rf.Type = RecordFieldType.Date;
else if (fieldTable.Rows[i]["FieldType"].ToString() == "bit")
rf.Type = RecordFieldType.Boolean;
else if (fieldTable.Rows[i]["FieldType"].ToString() == "numeric")
rf.Type = RecordFieldType.Float;
st.AddField(rf, i);
}
st.DataSource = sourceDataTable;
st.DataBind();
return st;
}
#region 创建导航Button
/// <summary>
/// 创建导航Button
/// </summary>
/// <param name="list">{ "新建|0", "编辑", "打开", "删除", "打印"} ;”新建|0“0表示不可单击</param>
/// <param name="iconIndex">icon</param>
/// <returns></returns>
public static Toolbar CreateToolBar(string[] list, int iconIndex)
{
Toolbar tBar = new Toolbar();
ButtonGroup bGroup = new ButtonGroup();
TableLayout tblLay = new TableLayout();
if (list == null || list.Length <= 0)
return null;
Ext.Net.Button btn;
Cell cell;
for (int i = 0; i < list.Length; i++)
{
cell = new Cell();
btn = new Button();
btn.Text = list[i].Split(new char[] { '|' }, StringSplitOptions.None)[0];
string strEnable = list[i].IndexOf('|') > 0 ? list[i].Split(new char[] { '|' }, StringSplitOptions.None)[1] : list[i];
if (!string.IsNullOrEmpty(strEnable) && strEnable == "0")
btn.Disabled = true;
//
switch (list[i].Split(new char[] { '|' }, StringSplitOptions.None)[0])
{
case "新建": btn.Icon = Ext.Net.Icon.FilmAdd; btn.ID = "btnTopBarAdd"; //btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "打开": btn.Icon = Ext.Net.Icon.FilmGo; btn.ID = "btnTopBarOpen";
break;
case "编辑": btn.Icon = Ext.Net.Icon.FilmEdit; btn.ID = "btnTopBarEdit"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "删除": btn.Icon = Ext.Net.Icon.FilmDelete; btn.ID = "btnTopBarDelete"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "转抄": btn.Icon = Ext.Net.Icon.FilmEject; btn.ID = "btnTopBarEject"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "打印": btn.Icon = Ext.Net.Icon.Printer; btn.ID = "btnTopBarPrinter"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "取消": btn.Icon = Ext.Net.Icon.Cancel; btn.ID = "btnTopBarCancel"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "附件": btn.Icon = Ext.Net.Icon.FilmMagnify; btn.ID = "btnTopBarMagnify"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "提交": btn.Icon = Ext.Net.Icon.FilmSave; btn.ID = "btnTopBarSave"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "通过": btn.Icon = Ext.Net.Icon.FilmStar; btn.ID = "btnTopBarStar"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "移交": btn.Icon = Ext.Net.Icon.Transmit; btn.ID = "btnTopBarTransmit"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "获取": btn.Icon = Ext.Net.Icon.FilmKey; btn.ID = "btnTopBarGet"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "驳回": btn.Icon = Ext.Net.Icon.ResultsetNext; btn.ID = "btnTopBarReturn"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "操作记录": btn.Icon = Ext.Net.Icon.RecordBlue; btn.ID = "btnTopBarRecord"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
case "关联": btn.Icon = Ext.Net.Icon.Reload; btn.ID = "btnTopBarReload"; btn.Listeners.Click.Handler = "Ext.net.DirectMethods.TopBarClick('" + btn.Text + "');";
break;
default: btn.Icon = Ext.Net.Icon.Add;
break;
}
cell.Items.Add(btn);
tblLay.Cells.Add(cell);
}
bGroup.Items.Add(tblLay);
tBar.Items.Add(bGroup);
return tBar;
}
}
【因暂 为了展示效果,代码没有重构,后期预计要花一段时间来重构下。】
大体运行起来,个人觉得ext.net 对一般小型后台开发 值得推荐。至少你公司可以不用招聘UED 呵呵
不过另一面 它的功能、效果 等等 的确做到很不错!
最后用一句广告 总结下 ext.net 值得你拥有
作者:PEPE
出处:http://pepe.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
作者:PEPE
出处:http://pepe.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。