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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @ 2011-10-10 10:00  PEPE YU  阅读(3186)  评论(22编辑  收藏  举报