PageRenderTime 33ms CodeModel.GetById 5ms RepoModel.GetById 0ms app.codeStats 0ms

/VisualFlow/Comm/HelperOfDDL.aspx.cs

#
C# | 571 lines | 465 code | 73 blank | 33 comment | 62 complexity | 025743897995b7dd9b5e9072af08a148 MD5 | raw file
Possible License(s): AGPL-3.0
  1. using System;
  2. using System.Collections;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Web;
  7. using System.Web.SessionState;
  8. using System.Web.UI;
  9. using System.Web.UI.WebControls;
  10. using System.Web.UI.HtmlControls;
  11. using Microsoft.Web.UI.WebControls;
  12. using BP.En;
  13. using BP.DA;
  14. using BP.Web.Controls;
  15. using BP.Sys;
  16. namespace BP.Web.Comm.UI
  17. {
  18. /// <summary>
  19. /// UIEn1ToM 的摘要说明。
  20. /// </summary>
  21. public partial class HelperOfDDL : System.Web.UI.Page
  22. {
  23. #region 属性.
  24. public AttrOfOneVSM AttrOfOneVSM
  25. {
  26. get
  27. {
  28. Entity en = ClassFactory.GetEn(this.EnsName) ;
  29. foreach(AttrOfOneVSM attr in en.EnMap.AttrsOfOneVSM)
  30. {
  31. if (attr.EnsOfMM.ToString()==this.AttrKey)
  32. {
  33. return attr;
  34. }
  35. }
  36. throw new Exception("错误没有找到属性. ");
  37. }
  38. }
  39. /// <summary>
  40. /// 一的工作类
  41. /// </summary>
  42. public string EnsName
  43. {
  44. get
  45. {
  46. return this.Request.QueryString["EnsName"] ;
  47. }
  48. }
  49. public string AttrKey
  50. {
  51. get
  52. {
  53. return this.Request.QueryString["AttrKey"] ;
  54. }
  55. }
  56. public string PK
  57. {
  58. get
  59. {
  60. if (ViewState["PK"]==null)
  61. {
  62. if (this.Request.QueryString["PK"]!=null)
  63. {
  64. ViewState["PK"]=this.Request.QueryString["PK"];
  65. }
  66. else
  67. {
  68. Entity mainEn=DA.ClassFactory.GetEn( this.EnsName ) ;
  69. ViewState["PK"]=this.Request.QueryString[mainEn.PK];
  70. }
  71. }
  72. return (string)ViewState["PK"];
  73. }
  74. }
  75. #endregion
  76. public bool IsLine
  77. {
  78. get
  79. {
  80. try
  81. {
  82. return (bool)ViewState["IsLine"];
  83. }
  84. catch
  85. {
  86. return false;
  87. }
  88. }
  89. set
  90. {
  91. ViewState["IsLine"]=value;
  92. }
  93. }
  94. protected void Page_Load(object sender, System.EventArgs e)
  95. {
  96. if (this.IsPostBack == false)
  97. {
  98. //this.GenerLabel(this.Label1,"数据快速选择");
  99. Entities ens = DA.ClassFactory.GetEns(this.Request.QueryString["EnsName"]);
  100. Entity en = ens.GetNewEntity; // = DA.ClassFactory.GetEns(this.Request.QueryString["EnsName"] );
  101. Map map = en.EnMap;
  102. foreach (Attr attr in map.Attrs)
  103. {
  104. /* map */
  105. if (attr.MyFieldType == FieldType.FK || attr.MyFieldType == FieldType.Enum)
  106. this.DropDownList1.Items.Add(new ListItem(attr.Desc, attr.Key));
  107. }
  108. this.DropDownList1.Items.Add(new ListItem("无", "None"));
  109. }
  110. try
  111. {
  112. this.SetDataV2();
  113. }
  114. catch (Exception ex)
  115. {
  116. if (ex.Message.Contains("枚举操作") || ex.Message.Contains("集合已修改"))
  117. {
  118. System.Threading.Thread.Sleep(3000);
  119. this.Response.Redirect(this.Request.RawUrl);
  120. return;
  121. }
  122. }
  123. }
  124. public string RefKey
  125. {
  126. get
  127. {
  128. return this.Request.QueryString["RefKey"];
  129. }
  130. }
  131. public string RefText
  132. {
  133. get
  134. {
  135. return this.Request.QueryString["RefText"];
  136. }
  137. }
  138. public void SetDataV2()
  139. {
  140. this.UCSys1.Clear();
  141. Entities ens = DA.ClassFactory.GetEns(this.Request.QueryString["EnsName"]);
  142. ens.RetrieveAll();
  143. Entity en = ens.GetNewEntity;
  144. string space = "";
  145. if (this.DropDownList1.SelectedValue == "None")
  146. {
  147. bool isGrade = ens.IsGradeEntities;
  148. if (isGrade)
  149. {
  150. this.UCSys1.Add("<a name='top' ></a>");
  151. int num = ens.GetCountByKey("Grade", 2);
  152. if (num > 1)
  153. {
  154. int i = 0;
  155. this.UCSys1.AddTable();
  156. this.UCSys1.AddTR();
  157. this.UCSys1.AddTDTitle("序号");
  158. this.UCSys1.AddTDTitle("<img src='../Images/Home.gif' border=0 />数据选择导航");
  159. this.UCSys1.AddTREnd();
  160. foreach (Entity myen in ens)
  161. {
  162. if (myen.GetValIntByKey("Grade") != 2)
  163. continue;
  164. i++;
  165. this.UCSys1.AddTR();
  166. this.UCSys1.AddTDIdx(i);
  167. this.UCSys1.AddTD("<a href='#ID" + myen.GetValStringByKey(this.RefKey) + "' >&nbsp;&nbsp;" + myen.GetValStringByKey(this.RefKey) + "&nbsp;&nbsp;" + myen.GetValStringByKey(this.RefText) + "</a>");
  168. this.UCSys1.AddTREnd();
  169. }
  170. this.UCSys1.AddTableEnd();
  171. }
  172. }
  173. this.UCSys1.AddTable();
  174. this.UCSys1.AddTR();
  175. this.UCSys1.AddTDTitle("IDX");
  176. this.UCSys1.AddTDTitle("");
  177. this.UCSys1.AddTREnd();
  178. bool is1 = false;
  179. int idx = 0;
  180. foreach (Entity myen in ens)
  181. {
  182. idx++;
  183. is1 = this.UCSys1.AddTR(is1);
  184. this.UCSys1.AddTDIdx(idx);
  185. RadioBtn rb = new RadioBtn();
  186. rb.GroupName = "s";
  187. if (isGrade)
  188. {
  189. int grade = myen.GetValIntByKey("Grade");
  190. space = "";
  191. space = space.PadLeft(grade - 1, '-');
  192. space = space.Replace("-", "&nbsp;&nbsp;&nbsp;");
  193. // this.UCSys1.AddTD(space);
  194. switch (grade)
  195. {
  196. case 2:
  197. rb.Text = "<a href='#top' name='ID" + myen.GetValStringByKey(this.RefKey) + "' ><Img src='../Images/Top.gif' border=0 /></a><b><font color=green>" + myen.GetValStringByKey(this.RefKey) + myen.GetValStringByKey(this.RefText) + "</font></b>";
  198. break;
  199. case 3:
  200. rb.Text = "<b>" + myen.GetValStringByKey(this.RefKey) + myen.GetValStringByKey(this.RefText) + "</b>";
  201. break;
  202. default:
  203. rb.Text = myen.GetValStringByKey(this.RefKey) + myen.GetValStringByKey(this.RefText);
  204. break;
  205. }
  206. }
  207. else
  208. {
  209. rb.Text = myen.GetValStringByKey(this.RefText);
  210. }
  211. rb.ID = "RB_" + myen.GetValStringByKey(this.RefKey);
  212. string clientscript = "window.returnValue = '" + myen.GetValStringByKey(this.RefKey) + "';window.close();";
  213. rb.Attributes["onclick"] = clientscript;
  214. //this.UCSys1.Add(rb);
  215. //this.UCSys1.AddBR();
  216. this.UCSys1.AddTD(rb);
  217. this.UCSys1.AddTREnd();
  218. }
  219. this.UCSys1.AddTableEnd();
  220. return;
  221. }
  222. string key = this.DropDownList1.SelectedValue;
  223. Attr attr = en.EnMap.GetAttrByKey(key);
  224. if (attr.MyFieldType == FieldType.Enum || attr.MyFieldType == FieldType.PKEnum)
  225. {
  226. SysEnums ses = new SysEnums(attr.Key);
  227. this.UCSys1.AddTable(); //("<TABLE border=1 >");
  228. foreach (SysEnum se in ses)
  229. {
  230. this.UCSys1.Add("<TR><TD class='Toolbar'>");
  231. this.UCSys1.Add(se.Lab);
  232. this.UCSys1.Add("</TD></TR>");
  233. this.UCSys1.Add("<TR><TD>");
  234. #region add dtl
  235. this.UCSys1.AddTable();
  236. int i = -1;
  237. foreach (Entity myen in ens)
  238. {
  239. if (myen.GetValIntByKey(attr.Key) != se.IntKey)
  240. continue;
  241. i++;
  242. if (i == 3)
  243. i = 0;
  244. if (i == 0)
  245. this.UCSys1.Add("<TR>");
  246. RadioBtn rb = new RadioBtn();
  247. rb.GroupName = "dsfsd";
  248. rb.Text = myen.GetValStringByKey(this.RefText);
  249. rb.ID = "RB_" + myen.GetValStringByKey(this.RefKey);
  250. string clientscript = "window.returnValue = '" + myen.GetValStringByKey(this.RefKey) + "';window.close();";
  251. // rb.Attributes["ondblclick"] = clientscript;
  252. rb.Attributes["onclick"] = clientscript;
  253. this.UCSys1.AddTD(rb);
  254. if (i == 2)
  255. this.UCSys1.Add("</TR>");
  256. }
  257. this.UCSys1.Add("</TABLE>");
  258. #endregion add dtl.
  259. this.UCSys1.Add("</TD></TR>");
  260. }
  261. this.UCSys1.Add("</TABLE>");
  262. return;
  263. }
  264. if (attr.Key == "FK_Dept")
  265. {
  266. BP.Port.Depts Depts = new BP.Port.Depts();
  267. Depts.RetrieveAll();
  268. this.UCSys1.AddTR();
  269. this.UCSys1.AddTDToolbar("一级分组");
  270. this.UCSys1.AddTREnd();
  271. this.UCSys1.AddTR();
  272. this.UCSys1.AddTDBegin();
  273. this.UCSys1.AddTable();
  274. /* 显示导航信息 */
  275. int i = 0;
  276. //int span = 2;
  277. foreach (BP.Port.Dept Dept in Depts)
  278. {
  279. if (Dept.Grade == 2 || Dept.Grade == 1)
  280. {
  281. i++;
  282. this.UCSys1.Add("<TR>");
  283. this.UCSys1.AddTDIdx(i);
  284. this.UCSys1.AddTD("<a href='#ID_2" + Dept.No + "' >&nbsp;&nbsp;" + Dept.No + "&nbsp;&nbsp;" + Dept.Name + "</a><BR>");
  285. this.UCSys1.Add("</TR>");
  286. }
  287. }
  288. this.UCSys1.AddTableEnd();
  289. this.UCSys1.AddTDEnd();
  290. this.UCSys1.AddTREnd();
  291. // =====================
  292. this.UCSys1.AddTR();
  293. this.UCSys1.AddTDToolbar("二级分组");
  294. this.UCSys1.AddTREnd();
  295. this.UCSys1.AddTDBegin();
  296. this.UCSys1.AddTable();
  297. /* 显示导航信息 */
  298. // int i = 0;
  299. //int span = 2;
  300. i = 0;
  301. foreach (BP.Port.Dept Dept in Depts)
  302. {
  303. i++;
  304. this.UCSys1.Add("<TR>");
  305. this.UCSys1.AddTDIdx(i);
  306. if (Dept.Grade == 2)
  307. this.UCSys1.AddTD("&nbsp;&nbsp;<a name='ID_2" + Dept.No + "' >" + Dept.No + "</A>&nbsp;&nbsp;<a href='#ID" + Dept.No + "' ><b>" + Dept.Name + "</b></a><A HREF='#top'><Img src='../Images/Top.gif' border=0 /></a><BR>");
  308. else
  309. this.UCSys1.AddTD("&nbsp;&nbsp;" + Dept.No + "&nbsp;&nbsp;<a href='#ID" + Dept.No + "' name='#ID_2" + Dept.No + "' >" + Dept.Name + "</a><BR>");
  310. this.UCSys1.Add("</TR>");
  311. }
  312. this.UCSys1.Add("</Table>");
  313. this.UCSys1.Add("</TD></TR>");
  314. //============ 数据
  315. foreach (BP.Port.Dept groupen in Depts)
  316. {
  317. this.UCSys1.Add("<TR><TD class='Toolbar' >");
  318. this.UCSys1.Add("<a href='#ID_2" + groupen.No + "' name='ID" + groupen.No + "' ><Img src='../Images/Top.gif' border=0 /></a>&nbsp;&nbsp;" + groupen.GetValStringByKey(attr.UIRefKeyText));
  319. this.UCSys1.Add("</TD></TR>");
  320. this.UCSys1.Add("<TR><TD>");
  321. #region add info .
  322. this.UCSys1.AddTable();
  323. i = -1;
  324. foreach (Entity myen in ens)
  325. {
  326. if (myen.GetValStringByKey(attr.Key) != groupen.GetValStringByKey(attr.UIRefKeyValue))
  327. continue;
  328. i++;
  329. if (i == 3)
  330. i = 0;
  331. if (i == 0)
  332. this.UCSys1.Add("<TR>");
  333. RadioBtn rb = new RadioBtn();
  334. rb.GroupName = "dsfsd";
  335. rb.Text = myen.GetValStringByKey(this.RefText);
  336. rb.ID = "RB_" + myen.GetValStringByKey(this.RefKey);
  337. string clientscript = "window.returnValue = '" + myen.GetValStringByKey(this.RefKey) + "';window.close();";
  338. // rb.Attributes["ondblclick"] = clientscript;
  339. rb.Attributes["onclick"] = clientscript;
  340. this.UCSys1.AddTD(rb);
  341. if (i == 2)
  342. this.UCSys1.Add("</TR>");
  343. }
  344. this.UCSys1.Add("</Table>");
  345. #endregion add info .
  346. this.UCSys1.Add("</TD></TR>");
  347. }
  348. this.UCSys1.Add("</TABLE>");
  349. }
  350. else
  351. {
  352. Entities groupens = ClassFactory.GetEns(attr.UIBindKey);
  353. groupens.RetrieveAll();
  354. this.UCSys1.AddTable(); //("<TABLE border=1 >");
  355. if (groupens.Count > 19)
  356. {
  357. this.UCSys1.Add("<TR><TD class='Toolbar' ><img src='../Images/Home.gif' border=0 />数据选择导航&nbsp;&nbsp;&nbsp;<font size='2'>提示:点分组连接就可到达分组数据</font></TD></TR>");
  358. this.UCSys1.Add("<TR><TD>");
  359. this.UCSys1.AddTable();
  360. /* 显示导航信息 */
  361. int i = 0;
  362. //int span = 2;
  363. foreach (Entity groupen in groupens)
  364. {
  365. i++;
  366. this.UCSys1.AddTR();
  367. this.UCSys1.AddTDIdx(i);
  368. this.UCSys1.AddTD("<a href='#ID" + groupen.GetValStringByKey(attr.UIRefKeyValue) + "' >&nbsp;&nbsp;" + groupen.GetValStringByKey(attr.UIRefKeyValue) + "&nbsp;&nbsp;" + groupen.GetValStringByKey(attr.UIRefKeyText) + "</a><BR>");
  369. this.UCSys1.AddTREnd();
  370. }
  371. this.UCSys1.Add("</Table>");
  372. this.UCSys1.Add("</TD></TR>");
  373. }
  374. foreach (Entity groupen in groupens)
  375. {
  376. this.UCSys1.Add("<TR><TD class='Toolbar' >");
  377. this.UCSys1.Add("<a href='#top' name='ID" + groupen.GetValStringByKey(attr.UIRefKeyValue) + "' ><Img src='../Images/Top.gif' border=0 /></a>&nbsp;&nbsp;" + groupen.GetValStringByKey(attr.UIRefKeyText));
  378. this.UCSys1.Add("</TD></TR>");
  379. this.UCSys1.Add("<TR><TD>");
  380. #region add info .
  381. this.UCSys1.AddTable();
  382. int i = -1;
  383. foreach (Entity myen in ens)
  384. {
  385. if (myen.GetValStringByKey(attr.Key) != groupen.GetValStringByKey(attr.UIRefKeyValue))
  386. continue;
  387. i++;
  388. if (i == 3)
  389. i = 0;
  390. if (i == 0)
  391. this.UCSys1.AddTR();
  392. RadioBtn rb = new RadioBtn();
  393. rb.GroupName = "dsfsd";
  394. rb.Text = myen.GetValStringByKey(this.RefText);
  395. rb.ID = "RB_" + myen.GetValStringByKey(this.RefKey);
  396. string clientscript = "window.returnValue = '" + myen.GetValStringByKey(this.RefKey) + "';window.close();";
  397. // rb.Attributes["ondblclick"] = clientscript;
  398. rb.Attributes["onclick"] = clientscript;
  399. this.UCSys1.AddTD(rb);
  400. if (i == 2)
  401. this.UCSys1.AddTREnd();
  402. }
  403. this.UCSys1.AddTableEnd();
  404. #endregion add info .
  405. this.UCSys1.Add("</TD></TR>");
  406. }
  407. this.UCSys1.AddTableEnd();
  408. }
  409. }
  410. #region 操作
  411. public void EditMEns()
  412. {
  413. //this.WinOpen(this.Request.ApplicationPath+"/Comm/UIEns.aspx?EnsName="+this.AttrOfOneVSM.EnsOfM.ToString());
  414. }
  415. public void Save()
  416. {
  417. AttrOfOneVSM attr = this.AttrOfOneVSM ;
  418. Entities ensOfMM = attr.EnsOfMM;
  419. QueryObject qo = new QueryObject(ensOfMM);
  420. qo.AddWhere(attr.AttrOfOneInMM,this.PK);
  421. qo.DoQuery();
  422. ensOfMM.Delete(); // 删除以前保存得数据。
  423. AttrOfOneVSM attrOM = this.AttrOfOneVSM;
  424. Entities ensOfM = attrOM.EnsOfM;
  425. ensOfM.RetrieveAll();
  426. foreach(Entity en in ensOfM)
  427. {
  428. string pk = en.GetValStringByKey( attr.AttrOfMValue );
  429. CheckBox cb = (CheckBox)this.UCSys1.FindControl("CB_"+ pk );
  430. if (cb.Checked==false)
  431. continue;
  432. Entity en1 =ensOfMM.GetNewEntity;
  433. en1.SetValByKey(attr.AttrOfOneInMM,this.PK);
  434. en1.SetValByKey(attr.AttrOfMInMM, pk );
  435. en1.Insert();
  436. }
  437. Entity enP = DA.ClassFactory.GetEn(this.Request.QueryString["EnsName"] );
  438. if (enP.EnMap.EnType!=EnType.View)
  439. {
  440. enP.SetValByKey(enP.PK, this.PK) ;// =this.PK;
  441. enP.Retrieve(); //查询。
  442. enP.Update(); // 执行更新,处理写在 父实体 的业务逻辑。
  443. }
  444. }
  445. #endregion
  446. #region Web 窗体设计器生成的代码
  447. override protected void OnInit(EventArgs e)
  448. {
  449. //
  450. // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
  451. //
  452. InitializeComponent();
  453. base.OnInit(e);
  454. }
  455. /// <summary>
  456. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  457. /// 此方法的内容。
  458. /// </summary>
  459. private void InitializeComponent()
  460. {
  461. }
  462. #endregion
  463. protected void Btn_OK_Click(object sender, EventArgs e)
  464. {
  465. Entities ens = DA.ClassFactory.GetEns(this.Request.QueryString["EnsName"]);
  466. ens.RetrieveAll();
  467. foreach (Entity en in ens)
  468. {
  469. RadioBtn rb = (RadioBtn)this.UCSys1.FindControl("RB_" + en.GetValStringByKey(this.RefKey));
  470. if (rb.Checked == false)
  471. continue;
  472. string val=en.GetValStringByKey(this.RefKey);
  473. string ddl=this.Request.QueryString["DDLID"];
  474. if (ddl != null)
  475. {
  476. /* */
  477. // ddl = ddl.Replace("DDL_");
  478. string mainEns=this.Request.QueryString["MainEns"];
  479. BP.Sys.UserRegedit ur = new UserRegedit(WebUser.No, mainEns + "_SearchAttrs");
  480. string cfgval = ur.Vals;
  481. int idx = cfgval.IndexOf(ddl + "=");
  482. string start = cfgval.Substring(0, idx);
  483. string end = cfgval.Substring(idx);
  484. end = end.Substring(end.IndexOf("@"));
  485. ur.Vals = start + val + end;
  486. ur.Update();
  487. }
  488. string clientscript = "<script language='javascript'> window.returnValue = '" + val + "'; window.close(); </script>";
  489. this.Page.Response.Write(clientscript);
  490. return;
  491. }
  492. }
  493. protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
  494. {
  495. this.SetDataV2();
  496. }
  497. }
  498. }