一直 在纳闷 十一放假七天,另一个更重要的节日春节 为什么也只有七天!!!没休息够 就要奔向远方……
言归正传,之前我们叁一直在捣鼓着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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。