一直 在纳闷 十一放假七天,另一个更重要的节日春节 为什么也只有七天!!!没休息够 就要奔向远方……
言归正传,之前我们叁一直在捣鼓着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; #endregionprotected 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 RegionTabPanel center = SetTabPanel();// Make TabExt.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 RegionExt.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());}////leftfor (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;}rightfor (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 RegionTabPanel center = new TabPanel();center.ID = "tabCenterChild";center.Title = "";center.ActiveTabIndex = 0;center.Height = 200;// Make TabExt.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 RegionTabPanel 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 RegionTabPanel 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;}elseX.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 elseemployee.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;//动态密码elseemployee.EnabledDynamicPass = 0;if (X.GetCtl("ckbChangePassFirstLogin") != null && (X.GetCtl("ckbChangePassFirstLogin") as Checkbox).Checked)employee.ChangePassFirstLogin = 1;// (X.GetCtl("ckbChangePassFirstLogin") as Checkbox).Checked ? 1 : 0; //初次变更密码elseemployee.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登录elseemployee.EnabledBS = 0;if (X.GetCtl("ckbEnabledRemote") != null && (X.GetCtl("ckbEnabledRemote") as Checkbox).Checked)employee.EnabledRemote = 1;// (X.GetCtl("ckbEnabledRemote") as Checkbox).Checked ? 1 : 0; //允许远程登录elseemployee.EnabledRemote = 0;if (!string.IsNullOrEmpty(Request.Form["dtJoinDate"]))employee.JoinDate = Convert.ToDateTime(Request.Form["dtJoinDate"]);elseemployee.JoinDate = null;if (!string.IsNullOrEmpty(Request.Form["dtLeaveDate"]))employee.LeaveDate = Convert.ToDateTime(Request.Form["dtLeaveDate"]);elseemployee.LeaveDate = null;if (X.GetCtl("ckbIsCanUse") != null && (X.GetCtl("ckbIsCanUse") as Checkbox).Checked)employee.IsCanUse = 1;// (X.GetCtl("ckbIsCanUse ") as Checkbox).Checked ? 1 : 0;//离职elseemployee.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 生成数据更新windowprotected 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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。