通过Cache机制实现通用的配置管理模块

发表于:2018-6-26 10:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:赵思伟    来源:博客园

  
  代码参考:
  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),我们将立即处理。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号