PageRenderTime 62ms CodeModel.GetById 29ms RepoModel.GetById 1ms app.codeStats 0ms

/VisualFlow/Comm/UC/UCSys.ascx.cs

#
C# | 2744 lines | 2649 code | 27 blank | 68 comment | 4 complexity | 3071902c731a88e53520d53a0b7f57c2 MD5 | raw file
Possible License(s): AGPL-3.0

Large files files are truncated, but you can click here to view the full file

  1. namespace BP.Web.Comm.UC
  2. {
  3. using System;
  4. using System.Collections;
  5. using System.ComponentModel;
  6. using System.Data;
  7. using System.Data.SqlClient;
  8. using System.Data.Odbc;
  9. using System.Drawing;
  10. using System.Web;
  11. using System.Web.SessionState;
  12. using System.Web.UI;
  13. using System.Web.UI.WebControls;
  14. using System.Web.UI.HtmlControls;
  15. using BP.Rpt;
  16. using BP.DA;
  17. using BP.En;
  18. using BP.Sys;
  19. using BP.Web;
  20. using BP.Web.Controls;
  21. using BP.Web.UC;
  22. using BP.XML;
  23. using BP.Sys.Xml;
  24. using BP.Port;
  25. // using OWC10;
  26. using Microsoft.Office.Interop.Owc11;
  27. /// <summary>
  28. /// UCSys 的摘要说明。
  29. /// </summary>
  30. public partial class UCSys : BP.Web.UC.UCBase
  31. {
  32. public static string FilesViewStr(string enName, object pk)
  33. {
  34. string url = System.Web.HttpContext.Current.Request.ApplicationPath + "/Comm/FileManager.aspx?EnsName=" + enName + "&PK=" + pk.ToString();
  35. //string strs="<a href=\"javascript:WinOpen("") \" >附件</>";
  36. //string strs="<a href=\"javascript:WinOpen('"+url+"') \" >编辑附件</>";
  37. string strs = "";
  38. SysFileManagers ens = new SysFileManagers(enName, pk.ToString());
  39. string path = System.Web.HttpContext.Current.Request.ApplicationPath;
  40. foreach (SysFileManager file in ens)
  41. {
  42. strs += "<img src='" + path + "/Images/FileType/" + file.MyFileExt.Replace(".", "") + ".gif' border=0 /><a href='" + path + file.MyFilePath + "' target='_blank' >" + file.MyFileName + file.MyFileExt + "</a>&nbsp;";
  43. if (file.Rec == WebUser.No)
  44. {
  45. strs += "<a title='打开它' href=\"javascript:DoAction('" + path + "/Comm/Do.aspx?ActionType=" + (int)ActionType.DeleteFile + "&OID=" + file.OID + "&EnsName=" + enName + "&PK=" + pk + "','删除文件《" + file.MyFileName + file.MyFileExt + "》')\" ><img src='" + path + "/Images/Btn/delete.gif' border=0 alt='删除此附件' /></a>&nbsp;";
  46. }
  47. }
  48. return strs;
  49. }
  50. public static string FilesViewStr1(string enName, object pk)
  51. {
  52. string url = System.Web.HttpContext.Current.Request.ApplicationPath + "/Comm/FileManager.aspx?EnsName=" + enName + "&PK=" + pk.ToString();
  53. //string strs="<a href=\"javascript:WinOpen("") \" >附件</>";
  54. string strs = "<a href=\"javascript:WinOpen('" + url + "') \" >编辑附件</>";
  55. SysFileManagers ens = new SysFileManagers(enName, pk.ToString());
  56. string path = System.Web.HttpContext.Current.Request.ApplicationPath;
  57. foreach (SysFileManager file in ens)
  58. {
  59. strs += "<img src='" + path + "/Images/FileType/" + file.MyFileExt.Replace(".", "") + ".gif' border=0 /><a href='" + path + file.MyFilePath + "' target='_blank' >" + file.MyFileName + file.MyFileExt + "</a>&nbsp;";
  60. }
  61. return strs;
  62. }
  63. public string GenerIt()
  64. {
  65. ////创建一个图形容器对象
  66. //OWC11.ChartSpace objCSpace = new OWC11.ChartSpaceClass();
  67. ////在图形容器中增加一个图形对象
  68. //OWC11.ChChart objChart = objCSpace.Charts.Add(0);
  69. ////将图形的类型设置为柱状图的一种
  70. //objChart.Type = OWC11.ChartChartTypeEnum.chChartTypeColumnStacked;
  71. ////将图形容器的边框颜色设置为白色
  72. //objCSpace.Border.Color = "White";
  73. ////显示标题
  74. //objChart.HasTitle = true;
  75. ////设置标题内容
  76. //objChart.Title.Caption = "统计图测试";
  77. ////设置标题字体的大小
  78. //objChart.Title.Font.Size = 10;
  79. ////设置标题为粗体
  80. //objChart.Title.Font.Bold = true;
  81. ////设置标题颜色为红色
  82. //objChart.Title.Font.Color = "Red";
  83. ////显示图例
  84. //objChart.HasLegend = true;
  85. ////设置图例字体大小
  86. //objChart.Legend.Font.Size = 10;
  87. ////设置图例位置为底端
  88. //objChart.Legend.Position = OWC11.ChartLegendPositionEnum.chLegendPositionBottom;
  89. ////在图形对象中添加一个系列
  90. //objChart.SeriesCollection.Add(0);
  91. ////给定系列的名字
  92. //objChart.SeriesCollection[0].SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames,
  93. // +(int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, "指标");
  94. ////给定值
  95. //objChart.SeriesCollection[0].SetData(OWC11.ChartDimensionsEnum.chDimValues,
  96. // +(int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, "10\t40\t58\t55\t44");
  97. ////显示数据,创建GIF文件的相对路径.
  98. //string FileName = DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".gif";
  99. //objCSpace.ExportPicture(@"E:\Projects\Study\OwcImg\ChartDetail.gif", "GIF", 450, 300);
  100. //return FileName;
  101. //Image1.ImageUrl = "Http://localhost/Study/OwcImg/ChartDetail.gif";
  102. return null;
  103. }
  104. public static string GenerChart(DataTable dt, string colOfGroupField, string colOfGroupName,
  105. string colOfNumField, string colOfNumName, string title, int chartHeight, int chartWidth, ChartType ct)
  106. {
  107. string strCategory = "";
  108. string strValue = "";
  109. //声明对象
  110. ChartSpace ThisChart = new ChartSpaceClass();
  111. ChChart ThisChChart = ThisChart.Charts.Add(0);
  112. ChSeries ThisChSeries = ThisChChart.SeriesCollection.Add(0);
  113. //显示图例
  114. ThisChChart.HasLegend = true;
  115. //标题
  116. ThisChChart.HasTitle = true;
  117. ThisChChart.Title.Caption = title;
  118. //给定x,y轴图示说明
  119. ThisChChart.Axes[0].HasTitle = true;
  120. ThisChChart.Axes[1].HasTitle = true;
  121. ThisChChart.Axes[0].Title.Caption = colOfGroupName;
  122. ThisChChart.Axes[1].Title.Caption = colOfNumName;
  123. switch (ct)
  124. {
  125. case ChartType.Histogram:
  126. foreach (DataRow dr in dt.Rows)
  127. {
  128. strCategory += dr[colOfGroupField].ToString() + '\t';
  129. strValue += dr[colOfNumField].ToString() + '\t';
  130. }
  131. ThisChChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;
  132. ThisChChart.Overlap = 50;
  133. //旋转
  134. ThisChChart.Rotation = 360;
  135. ThisChChart.Inclination = 10;
  136. //背景颜色
  137. ThisChChart.PlotArea.Interior.Color = "white";
  138. //底色
  139. ThisChChart.PlotArea.Floor.Interior.Color = "green";
  140. ////给定series的名字
  141. ThisChSeries.SetData(ChartDimensionsEnum.chDimSeriesNames,
  142. ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), colOfGroupName);
  143. //给定分类
  144. ThisChSeries.SetData(ChartDimensionsEnum.chDimCategories,
  145. ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
  146. //给定值
  147. ThisChSeries.SetData(ChartDimensionsEnum.chDimValues,
  148. ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);
  149. break;
  150. case ChartType.Pie:
  151. // 产生数据
  152. foreach (DataRow dr in dt.Rows)
  153. {
  154. strCategory += dr[colOfGroupField].ToString() + '\t';
  155. strValue += dr[colOfNumField].ToString() + '\t';
  156. }
  157. ThisChChart.Type = ChartChartTypeEnum.chChartTypePie3D;
  158. ThisChChart.SeriesCollection.Add(0);
  159. //在图表上显示数据
  160. ThisChChart.SeriesCollection[0].DataLabelsCollection.Add();
  161. ThisChChart.SeriesCollection[0].DataLabelsCollection[0].Position = ChartDataLabelPositionEnum.chLabelPositionAutomatic;
  162. ThisChChart.SeriesCollection[0].Marker.Style = ChartMarkerStyleEnum.chMarkerStyleCircle;
  163. //给定该组图表数据的名字
  164. ThisChChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames,
  165. +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "strSeriesName");
  166. //给定数据分类
  167. ThisChChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,
  168. +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);
  169. //给定值
  170. ThisChChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues,
  171. (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue);
  172. break;
  173. case ChartType.Line:
  174. // 产生数据
  175. foreach (DataRow dr in dt.Rows)
  176. {
  177. strCategory += dr[colOfGroupField].ToString() + '\t';
  178. strValue += dr[colOfNumField].ToString() + '\t';
  179. }
  180. ThisChChart.Type = ChartChartTypeEnum.chChartTypeLineStacked;
  181. ThisChChart.SeriesCollection.Add(0);
  182. //在图表上显示数据
  183. ThisChChart.SeriesCollection[0].DataLabelsCollection.Add();
  184. //ThisChChart.SeriesCollection[0].DataLabelsCollection[0].Position=ChartDataLabelPositionEnum.chLabelPositionAutomatic;
  185. //ThisChChart.SeriesCollection[0].DataLabelsCollection[0].Position=ChartDataLabelPositionEnum.chLabelPositionOutsideBase;
  186. ThisChChart.SeriesCollection[0].Marker.Style = ChartMarkerStyleEnum.chMarkerStyleCircle;
  187. //给定该组图表数据的名字
  188. ThisChChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames,
  189. +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "strSeriesName");
  190. //给定数据分类
  191. ThisChChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,
  192. +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);
  193. //给定值
  194. ThisChChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues,
  195. (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue);
  196. break;
  197. }
  198. //导出图像文件
  199. //ThisChart.ExportPicture("G:\\chart.gif","gif",600,350);
  200. string fileName = ct.ToString() + WebUser.No + ".gif";
  201. string strAbsolutePath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\\Temp\\" + fileName;
  202. try
  203. {
  204. ThisChart.ExportPicture(strAbsolutePath, "GIF", chartWidth, chartHeight);
  205. }
  206. catch (Exception ex)
  207. {
  208. throw new Exception("@不能创建文件,可能是权限的问题,请把该目录设置为任何人都可以修改。" + strAbsolutePath + " Exception:" + ex.Message);
  209. }
  210. return fileName;
  211. }
  212. public void BindMenu_Small(string enumKey, string url, string selecVal, bool IsShowAll)
  213. {
  214. SysEnums ses = new SysEnums(enumKey);
  215. this.Add("<Table >");
  216. this.AddTR();
  217. if (IsShowAll)
  218. {
  219. if (selecVal == "all")
  220. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center > <b>全部</A> </TD>");
  221. else
  222. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center ><A href='" + url.Replace("@" + enumKey, "all") + "' >全部</A> </TD>");
  223. }
  224. foreach (SysEnum se in ses)
  225. {
  226. if (se.IntKey.ToString() == selecVal)
  227. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center ><b>" + se.Lab + "</b></TD>");
  228. else
  229. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center ><A href='" + url.Replace("@" + enumKey, se.IntKey.ToString()) + "' >" + se.Lab + "</A> </TD>");
  230. }
  231. this.AddTREnd();
  232. this.AddTableEnd();
  233. }
  234. public void BindMenu(string enumKey, string url, string selecVal, bool IsShowAll, string imgPath, string newStr)
  235. {
  236. SysEnums ses = new SysEnums(enumKey);
  237. this.Add("<Table >");
  238. this.AddTR();
  239. if (newStr != null)
  240. {
  241. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center >" + newStr + "</TD>");
  242. }
  243. if (IsShowAll)
  244. {
  245. if (selecVal == "all")
  246. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center ><img src='" + imgPath + "all.gif' border=0 />全部</TD>");
  247. else
  248. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center ><A href='" + url.Replace("@" + enumKey, "all") + "' ><img src='" + imgPath + "all.gif' border=0 />全部</A> </TD>");
  249. }
  250. foreach (SysEnum se in ses)
  251. {
  252. if (se.IntKey.ToString() == selecVal)
  253. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center ><b><img src='" + imgPath + se.IntKey + ".gif' border=0 />" + se.Lab + "</b></TD>");
  254. else
  255. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center ><A href='" + url.Replace("@" + enumKey, se.IntKey.ToString()) + "' ><img src='" + imgPath + se.IntKey + ".gif' border=0 />" + se.Lab + "</A> </TD>");
  256. }
  257. this.AddTREnd();
  258. this.AddTableEnd();
  259. }
  260. public void BindMenu(string enumKey, string url, string selecVal, bool IsShowAll)
  261. {
  262. SysEnums ses = new SysEnums(enumKey);
  263. this.Add("<Table >");
  264. this.AddTR();
  265. if (IsShowAll)
  266. {
  267. if (selecVal == "all")
  268. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center > <b>全部</A> </TD>");
  269. else
  270. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center ><A href='" + url.Replace("@" + enumKey, "all") + "' >全部</A> </TD>");
  271. }
  272. foreach (SysEnum se in ses)
  273. {
  274. if (se.IntKey.ToString() == selecVal)
  275. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center ><b>" + se.Lab + "</b></TD>");
  276. else
  277. this.Add("<TD style='font-size:14px; font-weight:bolder; ' background=Enum.gif width='126' height='36' align=center ><A href='" + url.Replace("@" + enumKey, se.IntKey.ToString()) + "' >" + se.Lab + "</A> </TD>");
  278. }
  279. this.AddTREnd();
  280. this.AddTableEnd();
  281. }
  282. public void BindMenuList(string enumKey, string url, string selecVal)
  283. {
  284. SysEnums ses = new SysEnums(enumKey);
  285. this.Add("<Table >");
  286. foreach (SysEnum se in ses)
  287. {
  288. this.AddTR();
  289. if (se.IntKey.ToString() == selecVal)
  290. this.Add("<TD style='font-size:12px; font-weight:bolder;' background=Enum.gif width='126' height='36' align=center ><b>" + se.Lab + "</b></TD>");
  291. else
  292. this.Add("<TD style='font-size:12px; font-weight:bolder;' background=Enum.gif width='126' height='36' align=center ><A href='" + url.Replace("@" + enumKey, se.IntKey.ToString()) + "' >" + se.Lab + "</A> </TD>");
  293. this.AddTREnd();
  294. }
  295. this.AddTableEnd();
  296. }
  297. // public void BindXmlEns(XmlEns ens)
  298. public void BindXmlEns(XmlEns ens)
  299. {
  300. this.Clear();
  301. this.AddTable();
  302. XmlEn myen = ens[0];
  303. this.Add("<TR>");
  304. foreach (string key in myen.Row.Keys)
  305. this.Add("<TD class='Title' >" + key + "</TD>");
  306. this.AddTREnd();
  307. foreach (XmlEn en in ens)
  308. {
  309. this.Add("<TR onmouseover='TROver(this)' onmouseout='TROut(this)' >");
  310. foreach (string key in en.Row.Keys)
  311. this.AddTD(en.GetValStringByKey(key));
  312. this.AddTREnd();
  313. }
  314. this.Add("</Table>");
  315. }
  316. // public void GenerOutlookMenuV2(string cate)
  317. public void GenerOutlookMenuV2(string cate)
  318. {
  319. if (cate == null)
  320. cate = "01";
  321. this.Controls.Clear();
  322. DataSet ds = new DataSet();
  323. ds.ReadXml(SystemConfig.PathOfXML + "Menu.xml");
  324. DataTable dt = ds.Tables[0];
  325. DataTable dtl = dt.Clone();
  326. DataTable dtCate = dt.Clone();
  327. //DataTable dtl = dt.Clone();
  328. foreach (DataRow dr in dt.Rows)
  329. {
  330. string ForUser = dr["ForUser"].ToString().Trim();
  331. switch (ForUser)
  332. {
  333. case "SysAdmin":
  334. if (WebUser.HisUserType != UserType.SysAdmin)
  335. continue;
  336. break;
  337. case "AppAdmin":
  338. if (WebUser.HisUserType == UserType.AppAdmin
  339. || WebUser.HisUserType == UserType.SysAdmin)
  340. {
  341. }
  342. else
  343. continue;
  344. break;
  345. default:
  346. break;
  347. }
  348. string no = dr["No"].ToString().Trim();
  349. if (no.Trim().Length == 2)
  350. {
  351. DataRow dr2 = dtCate.NewRow();
  352. dr2["No"] = dr["No"];
  353. dr2["Name"] = dr[BP.Web.WebUser.SysLang];
  354. dr2["Url"] = dr["Url"];
  355. dr2["Desc"] = dr["Desc"];
  356. dr2["Img"] = dr["Img"];
  357. dtCate.Rows.Add(dr2);
  358. continue;
  359. }
  360. if (no.Substring(0, 2) == cate)
  361. {
  362. DataRow dr1 = dtl.NewRow();
  363. dr1["No"] = dr["No"];
  364. dr1["Name"] = dr[BP.Web.WebUser.SysLang];
  365. dr1["Url"] = dr["Url"];
  366. dr1["Desc"] = dr["Desc"];
  367. dr1["Img"] = dr["Img"];
  368. dtl.Rows.Add(dr1);
  369. }
  370. }
  371. this.Add("<TABLE class='MainTable' >");
  372. int i = 0;
  373. foreach (DataRow dr in dtCate.Rows)
  374. {
  375. i++;
  376. string no = dr["No"].ToString();
  377. string name = dr[BP.Web.WebUser.SysLang].ToString();
  378. string url = dr["Url"].ToString();
  379. string img = dr["Img"].ToString();
  380. string desc = dr["Desc"].ToString(); //描述数据
  381. if (img.Trim().Length != 5)
  382. name = "<img src='" + img + "' border=0 />" + name;
  383. string srcp = "window.location.href='LeftOutlook.aspx?cate=" + no + "'";
  384. /*他是目录数据。*/
  385. if (cate == no)
  386. {
  387. /* 当前要选择他。*/
  388. this.Add("<TR >");
  389. this.Add("<TD class='TDM_Selected' nowrap=true title='" + dr["DESC"].ToString() + "' ><b>" + name + "</b></TD>");
  390. this.AddTREnd();
  391. /*如果遇到了当前要选择的菜单。*/
  392. this.Add("<TR height='100%' >");
  393. this.Add("<TD calss='TDItemTable' height='100%' >");
  394. this.Add("<Table class='ItemTable' cellpadding='0' cellspacing='0' style='border-collapse: collapse' >");
  395. foreach (DataRow itemdr in dtl.Rows)
  396. {
  397. string no1 = itemdr["No"].ToString();
  398. string name1 = itemdr[BP.Web.WebUser.SysLang].ToString();
  399. string url1 = itemdr["Url"].ToString();
  400. string img1 = itemdr["Img"].ToString();
  401. string desc1 = itemdr["Desc"].ToString(); //描述数据
  402. if (img1.Trim().Length != 5)
  403. name1 = "<img src='" + img1 + "' border=0 />" + name1;
  404. this.Add("<TR >");
  405. this.Add("<TD onclick=\"Javascript:WinOpen('" + url1 + "','mainfrm' )\" onmouseover=\"javascript:ItemOver(this);\" onmouseout=\"javascript:ItemOut(this);\" class='Item' title='" + desc1 + "' >");
  406. this.Add(name1);
  407. this.Add("</TD>");
  408. this.AddTREnd();
  409. }
  410. this.Add("</Table>");
  411. this.Add("</TD>");
  412. this.AddTREnd();
  413. }
  414. else
  415. {
  416. this.Add("<TR >");
  417. this.Add("<TD class='TDM' nowrap=true title='" + dr["DESC"].ToString() + "' onclick=\"" + srcp + "\" >" + name + "</TD>");
  418. this.AddTREnd();
  419. }
  420. }
  421. this.Add("</TABLE>");
  422. }
  423. // public void ClearViewState()
  424. public void ClearViewState()
  425. {
  426. this.ViewState.Clear();
  427. }
  428. // public void GenerOutlookMenuV2()
  429. public void GenerOutlookMenuV2()
  430. {
  431. this.Controls.Clear();
  432. DataSet ds = new DataSet();
  433. ds.ReadXml(SystemConfig.PathOfXML + "MenuMain.xml");
  434. DataTable dt = ds.Tables[0];
  435. this.Add("<TABLE border=-1 class='MainTable' >");
  436. int i = 0;
  437. foreach (DataRow dr in dt.Rows)
  438. {
  439. i++;
  440. string id = "Img" + i.ToString();
  441. string file = dr["File"].ToString();
  442. string ImgOut = dr["Out"].ToString();
  443. string ImgOn = dr["On"].ToString();
  444. string Name = "&nbsp;" + dr["Name"].ToString();
  445. string srcp = "window.location.href='LeftOutlook.aspx?xml=" + file + "'";
  446. this.Add("<TR >");
  447. //this.Add("<TD class='TDL' ><Img src='./ImgOutlook/panel_left_r.gif' border=0 width=1% > </TD>");
  448. this.Add("<TD class='TDM' nowrap=true title='" + dr["DESC"].ToString() + "' onclick=\"" + srcp + "\" >" + Name + "</TD>");
  449. //this.Add("<TD class='TDR' > </TD>");
  450. this.AddTREnd();
  451. /*如果遇到了当前要选择的菜单。*/
  452. this.Add("<TR >");
  453. //this.Add("<TD ></TD>");
  454. this.Add("<TD calss='TDItemTable' >");
  455. this.Add("<Table class='ItemTable' cellpadding='0' cellspacing='0' style='border-collapse: collapse' >");
  456. ds.Tables.Clear();
  457. ds.ReadXml(SystemConfig.PathOfXML + file);
  458. DataTable items = ds.Tables["Item"];
  459. foreach (DataRow itemdr in items.Rows)
  460. {
  461. string itemUrl = itemdr["URL"].ToString();
  462. string itemName = itemdr["Name"].ToString();
  463. string ICON = itemdr["ICON"].ToString();
  464. string Desc = itemdr["Desc"].ToString();
  465. this.Add("<TR >");
  466. //this.Add("<TD nowrap=true title='"+itemdr["DESC"].ToString()+"' >");
  467. this.Add("<TD onclick=\"Javascript:WinOpen('" + itemUrl + "','mainfrm' )\" onmouseover=\"javascript:ItemOver(this);\" onmouseout=\"javascript:ItemOut(this);\" class='Item' title='" + itemdr["DESC"].ToString() + "' >");
  468. this.Add(itemName);
  469. //this.Add("<img src='"+ImgOn+"' id='"+id+"' onclick=\"javascript:"+id+".src='"+ImgOut+"'; TDClick( '"+this.Request.ApplicationPath+"','"+file+"', '"+ ImgOn +"'); \" onmouseover=\"javascript:"+id+".src='"+ImgOut+"';\" onmouseout=\"javascript: "+id+".src='"+ImgOn+"'; \" />" );
  470. this.Add("</TD>");
  471. this.AddTREnd();
  472. }
  473. this.Add("</Table>");
  474. this.Add("</TD>");
  475. //this.Add("<TD ></TD>");
  476. this.AddTREnd();
  477. }
  478. this.Add("</TABLE>");
  479. }
  480. // public void ShowTableGroupEns( DataTable dt, Map map, int top,string url,bool isShowNoCol)
  481. public void ShowTableGroupEns(DataTable dt, Map map, int top, string url, bool isShowNoCol)
  482. {
  483. string str = "";
  484. str += "<Table style='border-collapse: collapse' bordercolor='#111111' >";
  485. str += "<TR>";
  486. str += " <TD warp=false class='Title' nowrap >";
  487. str += "ID";
  488. str += " </TD>";
  489. foreach (Attr attr in map.Attrs)
  490. {
  491. if (attr.Field == null && (attr.MyFieldType == FieldType.Enum || attr.MyFieldType == FieldType.PKEnum))
  492. continue;
  493. if (attr.MyFieldType == FieldType.RefText || attr.MyFieldType == FieldType.Normal)
  494. {
  495. str += " <TD warp=false class='Title' nowrap >";
  496. str += attr.Desc;
  497. str += " </TD>";
  498. }
  499. else
  500. {
  501. if (isShowNoCol)
  502. {
  503. str += " <TD warp=false class='Title' nowrap >";
  504. str += attr.Desc;
  505. str += " </TD>";
  506. }
  507. }
  508. }
  509. str += "</TR>";
  510. int idx = 0;
  511. string myurl = "";
  512. foreach (DataRow dr in dt.Rows)
  513. {
  514. idx++;
  515. str += "<TR class='TR' onmouseover='TROver(this)' onmouseout='TROut(this)' >";
  516. str += " <TD class='Idx' nowrap >";
  517. str += idx.ToString();
  518. str += " </TD>";
  519. myurl = "";
  520. foreach (Attr attr in map.Attrs)
  521. {
  522. if (attr.Field == null && (attr.MyFieldType == FieldType.Enum || attr.MyFieldType == FieldType.PKEnum))
  523. continue;
  524. if (attr.MyFieldType == FieldType.Normal)
  525. {
  526. str += " <TD class='TDNum' nowrap >";
  527. str += "<a href=\"javascript:WinOpen('" + url + myurl + "')\" >" + dr[attr.Field] + "</a>";
  528. str += " </TD>";
  529. }
  530. else
  531. {
  532. if (attr.MyFieldType == FieldType.RefText)
  533. {
  534. str += " <TD class='TD' nowrap >";
  535. str += dr[attr.Key];
  536. str += " </TD>";
  537. }
  538. else
  539. {
  540. myurl += "&" + attr.Key + "=" + dr[attr.Field];
  541. if (isShowNoCol)
  542. {
  543. str += " <TD class='TD' nowrap >";
  544. str += dr[attr.Field];
  545. str += " </TD>";
  546. }
  547. }
  548. }
  549. }
  550. str += "</TR>";
  551. if (idx == top)
  552. break;
  553. }
  554. str += "</Table>";
  555. this.Add(str);
  556. }
  557. // public void ShowTable( DataTable dt, Map map)
  558. public void ShowTable(DataTable dt, Map map)
  559. {
  560. string str = "";
  561. str += "<Table class='Table' >";
  562. str += "<TR>";
  563. str += " <TD warp=false class='Title' nowrap >";
  564. str += "ID";
  565. str += " </TD>";
  566. foreach (Attr attr in map.Attrs)
  567. {
  568. if (attr.Field == null)
  569. continue;
  570. str += " <TD warp=false class='Title' nowrap >";
  571. str += attr.Desc;
  572. str += " </TD>";
  573. }
  574. str += "</TR>";
  575. int idx = 0;
  576. foreach (DataRow dr in dt.Rows)
  577. {
  578. idx++;
  579. str += "<TR class='TR' onmouseover='TROver(this)' onmouseout='TROut(this)' >";
  580. str += " <TD class='TDLeft' nowrap >";
  581. str += idx.ToString();
  582. str += " </TD>";
  583. foreach (Attr attr in map.Attrs)
  584. {
  585. if (attr.UIContralType == UIContralType.DDL)
  586. continue;
  587. str += " <TD class='TD' nowrap >";
  588. if (attr.MyFieldType == FieldType.RefText)
  589. str += dr[attr.Key];
  590. else
  591. str += dr[attr.Field];
  592. str += " </TD>";
  593. }
  594. str += "</TR>";
  595. }
  596. str += "</Table>";
  597. this.Add(str);
  598. }
  599. public void ShowHidenMsg(string id, string title, string msg, bool isShowHelpIcon)
  600. {
  601. string appPath = this.Request.ApplicationPath;
  602. if (isShowHelpIcon)
  603. title = "<img src='" + appPath + "/Images/btn/help.gif' border=0 />" + title;
  604. msg = "<table class=Table id='t" + id + "' border=0 ><TR Class=TR ><TD class=TD bgcolor=InfoBackground >" + msg + "</TD></TR></Table>";
  605. string str = "<A onclick='show" + id + "();' style='cursor:hand' > <FONT color='#008000' style='font-size:14px' ><b>" + title + "</b><img src='" + appPath + "/Images/downUp.gif' id=Img" + id + "' ></FONT></A><span id='" + id + "'></span>";
  606. string script = "\n <script language='javascript'> var mode; mode=1; ";
  607. script += "\n function show" + id + "() {";
  608. script += "\n if (mode==0) ";
  609. script += "\n { \n";
  610. script += id + ".innerHTML='' \n";
  611. //script += "Img"+id + ".Src='/imgages/Up.gif' \n";
  612. script += " mode=1 \n";
  613. script += " }else{ \n";
  614. script += id + ".innerHTML=' " + msg + "'\n";
  615. // script += "Img" + id + ".Src='/imgages/Down.gif' \n";
  616. script += " mode=0 \n";
  617. script += " }\n";
  618. script += "}\n";
  619. script += "</script>\n";
  620. this.Add(str);
  621. this.Add(script);
  622. }
  623. public void ShowTable(string title, DataTable dt, DataTable sDT, string color, string refF)
  624. {
  625. this.AddTable();
  626. if (title != null)
  627. this.AddCaptionLeft(title);
  628. this.AddTR();
  629. this.AddTDTitle("序");
  630. foreach (DataColumn dc in dt.Columns)
  631. this.AddTDTitle(dc.ColumnName);
  632. this.AddTREnd();
  633. int i = 0;
  634. foreach (DataRow dr in dt.Rows)
  635. {
  636. i++;
  637. string bg = "";
  638. foreach (DataRow mydr in sDT.Rows)
  639. {
  640. if (mydr[refF].ToString() == dr[refF].ToString())
  641. {
  642. bg = "bgcolor=" + color;
  643. break;
  644. }
  645. }
  646. this.AddTR(bg);
  647. this.AddTDIdx(i);
  648. foreach (DataColumn dc in dt.Columns)
  649. {
  650. this.AddTD(dr[dc.ColumnName].ToString());
  651. }
  652. this.AddTREnd();
  653. }
  654. this.AddTableEnd();
  655. }
  656. // public void ShowTable( DataTable dt)
  657. public void ShowTable(string title, DataTable dt, bool is_TR_TX)
  658. {
  659. this.AddTable();
  660. if (title != null)
  661. this.AddCaptionLeft(title);
  662. this.AddTR();
  663. this.AddTDTitle("序");
  664. foreach (DataColumn dc in dt.Columns)
  665. this.AddTDTitle(dc.ColumnName);
  666. this.AddTREnd();
  667. int i = 0;
  668. foreach (DataRow dr in dt.Rows)
  669. {
  670. i++;
  671. if (is_TR_TX)
  672. this.AddTRTX();
  673. else
  674. this.AddTR();
  675. this.AddTDIdx(i);
  676. foreach (DataColumn dc in dt.Columns)
  677. {
  678. this.AddTD(dr[dc.ColumnName].ToString());
  679. }
  680. this.AddTREnd();
  681. }
  682. this.AddTableEnd();
  683. }
  684. // public void GenerOutlookMenu(string xmlFile)
  685. public void GenerOutlookMenu(string xmlFile)
  686. {
  687. this.Controls.Clear();
  688. DataSet ds = new DataSet();
  689. ds.ReadXml(SystemConfig.PathOfXML + "MenuMain.xml");
  690. DataTable dt = ds.Tables[0];
  691. if (xmlFile == null || xmlFile == "ss") //如果没有找到它,就设置第一个。
  692. this.Add("<TABLE border=-1 class='MainTable' >");
  693. else
  694. this.Add("<TABLE border=-1 class='MainTable' height=100% >");
  695. int i = 0;
  696. foreach (DataRow dr in dt.Rows)
  697. {
  698. i++;
  699. string id = "Img" + i.ToString();
  700. string file = dr["File"].ToString();
  701. string ImgOut = dr["Out"].ToString();
  702. string ImgOn = dr["On"].ToString();
  703. string Name = "&nbsp;" + dr["Name"].ToString();
  704. string srcp = "window.location.href='LeftOutlook.aspx?xml=" + file + "'";
  705. if (file == xmlFile)
  706. {
  707. this.Add("<TR >");
  708. this.Add("<TD class='TDM_Selected' nowrap=true title='" + dr["DESC"].ToString() + "' ><b>" + Name + "</b></TD>");
  709. this.AddTREnd();
  710. }
  711. else
  712. {
  713. this.Add("<TR >");
  714. this.Add("<TD class='TDM' nowrap=true title='" + dr["DESC"].ToString() + "' onclick=\"" + srcp + "\" >" + Name + "</TD>");
  715. this.AddTREnd();
  716. }
  717. if (xmlFile == "RptTemplate" && file == "RptTemplate")
  718. {
  719. /*如果遇到了当前要选择的菜单。*/
  720. this.Add("<TR >");
  721. this.Add("<TD calss='TDItemTable' >");
  722. this.Add("<Table class='ItemTable' cellpadding='0' cellspacing='0' style='border-collapse: collapse' >");
  723. //GroupEnsTemplates rpts = new GroupEnsTemplates(WebUser.No);
  724. //foreach (GroupEnsTemplate rpt in rpts)
  725. //{
  726. // string itemUrl = "../../Comm/GroupEnsMNum.aspx?EnsName=" + rpt.EnsName + "&Attrs=" + rpt.Attrs + "&OperateCol=" + rpt.OperateCol;
  727. // this.Add("<TR >");
  728. // this.Add("<TD onclick=\"Javascript:WinOpen('" + itemUrl + "','mainfrm' )\" onmouseover=\"javascript:ItemOver(this);\" onmouseout=\"javascript:ItemOut(this);\" class='Item' title='" + rpt.EnName + "' >");
  729. // this.Add("<Img src='../../TA/Images/Rpt.ico' border=0 />" + rpt.Name);
  730. // this.Add("</TD>");
  731. // this.AddTREnd();
  732. //}
  733. this.Add("</Table>");
  734. this.Add("</TD>");
  735. this.AddTREnd();
  736. }
  737. else if (file == xmlFile)
  738. {
  739. /*如果遇到了当前要选择的菜单。*/
  740. this.Add("<TR >");
  741. this.Add("<TD calss='TDItemTable' >");
  742. this.Add("<Table class='ItemTable' cellpadding='0' cellspacing='0' style='border-collapse: collapse' >");
  743. ds.Tables.Clear();
  744. ds.ReadXml(SystemConfig.PathOfXML + file);
  745. DataTable items = ds.Tables["Item"];
  746. foreach (DataRow itemdr in items.Rows)
  747. {
  748. string itemUrl = itemdr["URL"].ToString();
  749. string itemName = itemdr["Name"].ToString();
  750. string ICON = itemdr["ICON"].ToString();
  751. string Desc = itemdr["Desc"].ToString();
  752. this.Add("<TR >");
  753. //this.Add("<TD nowrap=true title='"+itemdr["DESC"].ToString()+"' >");
  754. this.Add("<TD onclick=\"Javascript:WinOpen('" + itemUrl + "','mainfrm' )\" onmouseover=\"javascript:ItemOver(this);\" onmouseout=\"javascript:ItemOut(this);\" class='Item' title='" + itemdr["DESC"].ToString() + "' >");
  755. this.Add(itemName);
  756. //this.Add("<img src='"+ImgOn+"' id='"+id+"' onclick=\"javascript:"+id+".src='"+ImgOut+"'; TDClick( '"+this.Request.ApplicationPath+"','"+file+"', '"+ ImgOn +"'); \" onmouseover=\"javascript:"+id+".src='"+ImgOut+"';\" onmouseout=\"javascript: "+id+".src='"+ImgOn+"'; \" />" );
  757. this.Add("</TD>");
  758. this.AddTREnd();
  759. }
  760. this.Add("</Table>");
  761. this.Add("</TD>");
  762. //this.Add("<TD ></TD>");
  763. this.AddTREnd();
  764. }
  765. }
  766. this.Add("</TABLE>");
  767. }
  768. // public void GenerOutlookMenu()
  769. public void GenerOutlookMenu()
  770. {
  771. this.Controls.Clear();
  772. DataSet ds = new DataSet();
  773. ds.ReadXml(SystemConfig.PathOfXML + "MenuMain.xml");
  774. DataTable dt = ds.Tables[0];
  775. this.Add("<TABLE border=-1 class='MainTable' >");
  776. int i = 0;
  777. foreach (DataRow dr in dt.Rows)
  778. {
  779. i++;
  780. string id = "Img" + i.ToString();
  781. string file = dr["File"].ToString();
  782. string ImgOut = dr["Out"].ToString();
  783. string ImgOn = dr["On"].ToString();
  784. string Name = "&nbsp;" + dr["Name"].ToString();
  785. string srcp = "window.location.href='LeftOutlook.aspx?xml=" + file + "'";
  786. this.Add("<TR >");
  787. //this.Add("<TD class='TDL' ><Img src='./ImgOutlook/panel_left_r.gif' border=0 width=1% > </TD>");
  788. this.Add("<TD class='TDM' nowrap=true title='" + dr["DESC"].ToString() + "' onclick=\"" + srcp + "\" >" + Name + "</TD>");
  789. //this.Add("<TD class='TDR' > </TD>");
  790. this.AddTREnd();
  791. /*如果遇到了当前要选择的菜单。*/
  792. this.Add("<TR >");
  793. //this.Add("<TD ></TD>");
  794. this.Add("<TD calss='TDItemTable' >");
  795. this.Add("<Table class='ItemTable' cellpadding='0' cellspacing='0' style='border-collapse: collapse' >");
  796. ds.Tables.Clear();
  797. ds.ReadXml(SystemConfig.PathOfXML + file);
  798. DataTable items = ds.Tables["Item"];
  799. foreach (DataRow itemdr in items.Rows)
  800. {
  801. string itemUrl = itemdr["URL"].ToString();
  802. string itemName = itemdr["Name"].ToString();
  803. string ICON = itemdr["ICON"].ToString();
  804. string Desc = itemdr["Desc"].ToString();
  805. this.Add("<TR >");
  806. //this.Add("<TD nowrap=true title='"+itemdr["DESC"].ToString()+"' >");
  807. this.Add("<TD onclick=\"Javascript:WinOpen('" + itemUrl + "','mainfrm' )\" onmouseover=\"javascript:ItemOver(this);\" onmouseout=\"javascript:ItemOut(this);\" class='Item' title='" + itemdr["DESC"].ToString() + "' >");
  808. this.Add(itemName);
  809. //this.Add("<img src='"+ImgOn+"' id='"+id+"' onclick=\"javascript:"+id+".src='"+ImgOut+"'; TDClick( '"+this.Request.ApplicationPath+"','"+file+"', '"+ ImgOn +"'); \" onmouseover=\"javascript:"+id+".src='"+ImgOut+"';\" onmouseout=\"javascript: "+id+".src='"+ImgOn+"'; \" />" );
  810. this.Add("</TD>");
  811. this.AddTREnd();
  812. }
  813. this.Add("</Table>");
  814. this.Add("</TD>");
  815. //this.Add("<TD ></TD>");
  816. this.AddTREnd();
  817. }
  818. this.Add("</TABLE>");
  819. }
  820. // public void GenerOutlookMenu_Img(string xmlFile)
  821. public void GenerOutlookMenu_Img(string xmlFile)
  822. {
  823. this.Controls.Clear();
  824. DataSet ds = new DataSet();
  825. ds.ReadXml(SystemConfig.PathOfXML + "MenuMain.xml");
  826. DataTable dt = ds.Tables[0];
  827. if (xmlFile == null || xmlFile == "") //如果没有找到它,就设置第一个。
  828. xmlFile = dt.Rows[0]["File"].ToString();
  829. this.Add("<TABLE border=0 class='MainTable' >");
  830. //e.Item.Attributes.Add("onmouseover","DGTROn"+WebUser.Style+"(this)");
  831. //e.Item.Attributes.Add("onmouseout","DGTROut"+WebUser.Style+"(this)");
  832. int i = 0;
  833. foreach (DataRow dr in dt.Rows)
  834. {
  835. i++;
  836. string id = "Img" + i.ToString();
  837. string file = dr["File"].ToString();
  838. string ImgOut = dr["Out"].ToString();
  839. string ImgOn = dr["On"].ToString();
  840. // window.location.href='MyDay.aspx?RefDate='+date;
  841. if (file == xmlFile)
  842. {
  843. this.Add("<TR>");
  844. this.Add("<TD nowrap=true title='" + dr["DESC"].ToString() + "' >");
  845. this.Add("<img src='" + ImgOn + "' id='" + id + "' />");
  846. this.Add("</TD>");
  847. this.AddTREnd();
  848. }
  849. else
  850. {
  851. string srcp = "window.location.href='LeftOutlook.aspx?xml=" + file + "'";
  852. this.Add("<TR>");
  853. this.Add("<TD nowrap=true title='" + dr["DESC"].ToString() + "' >");
  854. this.Add("<img src='" + ImgOn + "' id='" + id + "' onclick=\"javascript:" + id + ".src='" + ImgOut + "'; " + srcp + " ; ; \" onmouseover=\"javascript:" + id + ".src='" + ImgOut + "';\" onmouseout=\"javascript: " + id + ".src='" + ImgOn + "'; \" />");
  855. this.Add("</TD>");
  856. this.AddTREnd();
  857. }
  858. if (file == xmlFile)
  859. {
  860. /*如果遇到了当前要选择的菜单。*/
  861. this.Add("<TR>");
  862. this.Add("<TD>");
  863. this.Add("<Table border=0 class='ItemTable' >");
  864. ds.Tables.Clear();
  865. ds.ReadXml(SystemConfig.PathOfXML + file);
  866. DataTable items = ds.Tables["Item"];
  867. foreach (DataRow itemdr in items.Rows)
  868. {
  869. string itemUrl = itemdr["URL"].ToString();
  870. string itemName = itemdr["Name"].ToString();
  871. string ICON = itemdr["ICON"].ToString();
  872. string Desc = itemdr["Desc"].ToString();
  873. this.Add("<TR>");
  874. this.Add("<TD nowrap=true title='" + itemdr["DESC"].ToString() + "' >");
  875. this.Add("<a href='" + itemUrl + "' target='mainfrm' class='Link' >" + itemName + "</a>");
  876. //this.Add("<img src='"+ImgOn+"' id='"+id+"' onclick=\"javascript:"+id+".src='"+ImgOut+"'; TDClick( '"+this.Request.ApplicationPath+"','"+file+"', '"+ ImgOn +"'); \" onmouseover=\"javascript:"+id+".src='"+ImgOut+"';\" onmouseout=\"javascript: "+id+".src='"+ImgOn+"'; \" />" );
  877. this.Add("</TD>");
  878. this.AddTREnd();
  879. }
  880. this.Add("</Table>");
  881. this.Add("</TD>");
  882. this.AddTREnd();
  883. }
  884. }
  885. this.Add("</TABLE>");
  886. }
  887. // public void BindSystems()
  888. public void BindSystems()
  889. {
  890. this.AddTable();
  891. this.Add("<TR>");
  892. this.AddTDTitle("系统编号");
  893. this.AddTDTitle("名称");
  894. this.AddTDTitle("版本");
  895. this.AddTDTitle("发布日期");
  896. this.AddTREnd();
  897. //BPSystems ens = new BPSystems();
  898. //ens.RetrieveAll();
  899. //foreach (BPSystem en in ens)
  900. //{
  901. // this.Add("<TR onmouseover='TROver(this)' onmouseout='TROut(this)' >");
  902. // this.AddTD(en.No);
  903. // if (en.IsOk && SystemConfig.SysNo != en.No)
  904. // this.AddTD("<a href='" + en.URL + "&Token=" + WebUser.Token + "&No=" + WebUser.No + "' target='_parent' >" + en.Name + "</a> ");
  905. // else
  906. // this.AddTD(en.Name);
  907. // this.AddTD(en.Ver);
  908. // this.AddTD(en.IssueDate);
  909. // this.AddTREnd();
  910. //}
  911. this.Add("</Table>\n");
  912. }
  913. // public void BindWel()
  914. public void BindWel()
  915. {
  916. this.Controls.Clear();
  917. //this.Add("<font color='#000000' size=2 >欢迎您:"+WebUser.Name+",部门:"+WebUser.HisEmp.FK_DeptText+",岗位:"+WebUser.HisEmp.FK_StationText+"。</font>");
  918. }
  919. // public void BindMsgInfo(string msg)
  920. public void BindMsgInfo(string msg)
  921. {
  922. this.Controls.Clear();
  923. this.Add("<Table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse' >");
  924. this.Add("<Caption align=left ><b>提示信息</b></Caption>");
  925. this.Add("<TR>");
  926. this.Add("<TD bgcolor='#FFFF00' >" + msg + "</TD>");
  927. this.AddTREnd();
  928. this.Add("</Table>");
  929. }
  930. // public void BindMsgWarning(string msg)
  931. public void BindMsgWarning(string msg)
  932. {
  933. this.Controls.Clear();
  934. this.Add("<font color='#000000' size=40 >" + msg + "</font>");
  935. }
  936. // public void GenerMenuMain()
  937. public void GenerMenuMain()
  938. {
  939. this.Controls.Clear();
  940. DataSet ds = new DataSet();
  941. ds.ReadXml(SystemConfig.PathOfXML + "MenuMain.xml");
  942. DataTable dt = ds.Tables[0];
  943. this.Add("<TABLE border=0>");
  944. this.Add("<TR>");
  945. int i = 0;
  946. foreach (DataRow dr in dt.Rows)
  947. {
  948. i++;
  949. string id = "Img" + i.ToString();
  950. string file = dr["File"].ToString();
  951. string ImgOut = dr["Out"].ToString();
  952. string ImgOn = dr["On"].ToString();
  953. this.Add("<TD nowrap=true title='" + dr["DESC"].ToString() + "' >");
  954. this.Add("<img src='" + ImgOn + "' id='" + id + "' onclick=\"javascript:" + id + ".src='" + ImgOut + "'; TDClick( '" + this.Request.ApplicationPath + "','" + file + "', '" + ImgOn + "'); \" onmouseover=\"javascript:" + id + ".src='" + ImgOut + "';\" onmouseout=\"javascript: " + id + ".src='" + ImgOn + "'; \" />");
  955. this.Add("</TD>");
  956. }
  957. this.AddTREnd();
  958. this.Add("</TABLE>");
  959. }

Large files files are truncated, but you can click here to view the full file