代码参考:
frmConfigSet.aspx 以配置文件名为参数,根据配置文件自动生成维护界面,并进行维护,保存。
HtmlTable tab = new HtmlTable(); tab.ID = "tDynamic"; tab.Attributes.Add("width", "80%"); tab.Attributes.Add("class", "tablebody"); HtmlTableRow tr = new HtmlTableRow(); HtmlTableCell tc = new HtmlTableCell(); XmlNodeList nodes = xmldoc.DocumentElement.SelectNodes("Item"); string sConfigContent = ""; if (xmldoc.DocumentElement.Attributes["ConfigContent"] != null) sConfigContent = xmldoc.DocumentElement.Attributes["ConfigContent"].Value; string sItemDesc = ""; int iRow = 0; foreach (XmlNode node in nodes) { iRow++; tr = new HtmlTableRow(); tr.ID = "tDynamicRow" + iRow; AddControlByNode(node,iRow,ref tr); AddControl(tab, tr); sItemDesc = ""; if (node.Attributes["ItemContent"] != null) sItemDesc = node.Attributes["ItemContent"].Value; if (sItemDesc.Length > 0) { //添加描述行 iRow++; tr = new HtmlTableRow(); tr.ID = "tDyContectRow" + iRow; tc = new HtmlTableCell(); tc.ID = "tDyContectTD_" + iRow; tc.InnerText = sItemDesc; tc.Attributes.Add("class", "list"); tc.Attributes.Add("colspan", "2"); AddControl(tr, tc); AddControl(tab, tr); } } |
/// <summary> /// 获取设置的控件 /// </summary> /// <param name="node"></param> /// <returns></returns> private Control GetSettingControl(XmlNode node) { string strCtrlType = node.Attributes["ControlType"].Value; string strValue = node.Attributes["Value"].Value; Control control; switch (strCtrlType.ToLower()) { case "text": control = new TextBox(); control.ID = "tDynamic" + "_txt_" + node.Attributes["Name"].Value; ((TextBox)control).Width = new Unit("70%"); ((TextBox)control).Attributes.Add("Tag", node.Attributes["Name"].Value); ((TextBox)control).Text = strValue; break; case "checkbox": control = new CheckBox(); control.ID = "tDynamic" + "_chk_" + node.Attributes["Name"].Value; ((CheckBox)control).Attributes.Add("Tag", node.Attributes["Name"].Value); ((CheckBox)control).Text = node.Attributes["Desc"].Value; if (strValue.ToLower() == "false") { ((CheckBox)control).Checked = false; } else { ((CheckBox)control).Checked = true; } break; case "droplist": control = new DropDownList(); control.ID = "tDynamic" + "_drp_" + node.Attributes["Name"].Value; ((DropDownList)control).Attributes.Add("Tag", node.Attributes["Name"].Value); ((DropDownList)control).Width = new Unit("70%"); string[] sItems = node.Attributes["Dict"].Value.Split(",".ToCharArray()); for (int i = 0; i < sItems.Length; i++) { string[] arr = sItems[i].Split("|".ToCharArray()); ((DropDownList)control).Items.Add(new ListItem(arr[1], arr[0])); } ((DropDownList)control).SelectedValue = strValue; break; case "datetime": control = (Epower.ITSM.Web.Controls.CtrDateAndTime)LoadControl("~/controls/ctrdateandtime.ascx"); ((Epower.ITSM.Web.Controls.CtrDateAndTime)control).ShowTime = false; control.ID = "tDynamic" + "_date_" + node.Attributes["Name"].Value; ((Epower.ITSM.Web.Controls.CtrDateAndTime)control).Attributes.Add("Tag", node.Attributes["Name"].Value); break; default: control = null; break; } return control; } |
配置文件范例:
<?xml version="1.0" encoding="utf-8"?> <EmailConfig Title="邮件服务设置" ConfigContent="邮件服务器设置,服务器设置,.服务器设置,.服务器设置,.服务器设置,.服务器设置,.服务器设置,."> <Item Name="smtpserver" Value="smtp.vip.sina.com" Desc="邮件SMTP服务器" ControlType="TEXT" ItemContent="设置邮件SMTP服务器的地址,格式:smtp.vip.sina.com"> </Item> <Item Name="smtpfrom" Value="cancankf@vip.sina.com" Desc="邮件地址" ControlType="TEXT" ValidationExpression="^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$"> </Item> <Item Name="smtpUserName" Value="cancankf" Desc="帐户" ControlType="TEXT"> </Item> <Item Name="smtppsd" Value="123456" Desc="密码" ControlType="TEXT"> </Item> <Item Name="smtpSSL" Value="false" Desc="是否SSL" ControlType="CHECKBOX"> </Item> <Item Name="smtpPort" Value="0" Desc="端口" ControlType="TEXT" ValidationExpression="\d{0,9}"> </Item> <Item Name="smtpDateTest" Value="2008-07-21" Desc="测试日期" ControlType="DATETIME"> </Item> <Item Name="smtpListTest" Value="0" Desc="测试列表" ControlType="DROPLIST" Dict="0|值1,1|值2,2|值3"> </Item> </EmailConfig> |
读取配置信息范例
string sSmtpServer = ConfigHelper.GetParameterValue("EmailConfig","smtpserver");
E8.Net开源架构提供了这一功能的全部代码。用户可以直接使用或参考,并在此基础上更加的完善。
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。