Query.aspx.cs
上传用户:xgw_05
上传日期:2009-12-11
资源大小:20208k
文件大小:11k
源码类别:

OA系统

开发平台:

C#

  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 System.Data.SqlClient;
  12. using UDS.Components;
  13. namespace UDS.SubModule.UnitiveDocument.DocumentFlow
  14. {
  15. /// <summary>
  16. /// Query 的摘要说明。
  17. /// </summary>
  18. public class Query : System.Web.UI.Page
  19. {
  20. protected System.Web.UI.WebControls.DropDownList ddlFlow;
  21. protected System.Web.UI.WebControls.Button cmdAdd;
  22. protected System.Web.UI.WebControls.Button cmdDelete;
  23. protected System.Web.UI.WebControls.TextBox txtValue;
  24. protected System.Web.UI.WebControls.Table tabResult;
  25. protected System.Web.UI.WebControls.DropDownList ddlCompare;
  26. protected System.Web.UI.WebControls.CheckBoxList cblDisplay;
  27. protected System.Web.UI.WebControls.Button cmdQuery;
  28. protected System.Web.UI.WebControls.ListBox lbCondition;
  29. protected System.Web.UI.WebControls.DropDownList ddlStatistic;
  30. protected System.Web.UI.WebControls.DropDownList ddlCondition;
  31. private void Page_Load(object sender, System.EventArgs e)
  32. {
  33. // 在此处放置用户代码以初始化页面
  34. if(!Page.IsPostBack)
  35. FillFlow(ddlFlow);
  36. }
  37. void FillFlow(DropDownList ddl)
  38. {
  39. SqlDataReader dr; //存放人物的数据
  40. Database mySQL = new Database();
  41. SqlParameter[] parameters = {
  42. mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,0)
  43. };
  44. mySQL.RunProc("sp_Flow_GetFlow",parameters,out dr);
  45. DataTable dt =Tools.ConvertDataReaderToDataTable(dr);
  46. dr.Close();
  47. ddl.DataSource = dt.DefaultView;
  48. ddl.DataTextField = "Flow_Name";
  49. ddl.DataValueField = "Flow_ID";
  50. ddl.DataBind();
  51. if(ddl.Items.Count >0)
  52. {
  53. FillDisplayColumn();
  54. }
  55. }
  56. private void FillFieldName(CheckBoxList cblField,long iFlowID)
  57. {
  58. SqlDataReader dr; //存放人物的数据
  59. Database mySQL = new Database();
  60. SqlParameter[] parameters = {
  61. mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,iFlowID),
  62. mySQL.MakeInParam("@Judged",SqlDbType.Bit ,1,0)
  63. };
  64. mySQL.RunProc("sp_flow_getstyle_description",parameters,out dr);
  65. cblField.Items.Clear();
  66. while(dr.Read())
  67. {
  68. cblField.Items.Add(new ListItem(dr["Field_Description"].ToString(),dr["Field_Name"].ToString()));
  69. }
  70. cblField.Items.Add(new ListItem("流程名","Flow_Name"));
  71. cblField.Items.Add(new ListItem("拟稿日期","Doc_Added_Date"));
  72. cblField.Items.Add(new ListItem("撰搞人","RealName"));
  73. dr.Close();
  74. dr = null;
  75. for(int i=0;i<cblField.Items.Count;i++)
  76. {
  77. cblField.Items[i].Selected = true;
  78. }
  79. }
  80. private void FillFieldName(DropDownList ddl,long iFlowID)
  81. {
  82. SqlDataReader dr; //存放人物的数据
  83. Database mySQL = new Database();
  84. SqlParameter[] parameters = {
  85. mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,iFlowID),
  86. mySQL.MakeInParam("@Judged",SqlDbType.Bit ,1,0)
  87. };
  88. mySQL.RunProc("sp_flow_getstyle_description",parameters,out dr);
  89. ddl.Items.Clear();
  90. while(dr.Read())
  91. {
  92. ddl.Items.Add(new ListItem(dr["Field_Description"].ToString(),(dr["Judged"].ToString()=="True"?"1":"0") + dr["Field_Name"].ToString()));
  93. }
  94. dr.Close();
  95. dr = null;
  96. ddl.Items.Add(new ListItem("拟稿日期","2Doc_Added_Date"));
  97. ddl.Items.Add(new ListItem("拟稿人","0realname"));
  98. }
  99. private void FillStatisticFieldName(DropDownList ddl,long iFlowID)
  100. {
  101. SqlDataReader dr; //存放人物的数据
  102. Database mySQL = new Database();
  103. SqlParameter[] parameters = {
  104. mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,iFlowID),
  105. mySQL.MakeInParam("@Judged",SqlDbType.Bit ,1,1)
  106. };
  107. mySQL.RunProc("sp_flow_getstyle_description",parameters,out dr);
  108. ddl.Items.Clear();
  109. while(dr.Read())
  110. {
  111. ddl.Items.Add(new ListItem(dr["Field_Description"].ToString(),(dr["Judged"].ToString()=="True"?"1":"0") + dr["Field_Name"].ToString()));
  112. }
  113. dr.Close();
  114. dr = null;
  115. }
  116. void FillDisplayColumn()
  117. {
  118. FillFieldName(cblDisplay,Int32.Parse(ddlFlow.Items[ddlFlow.SelectedIndex].Value)); 
  119. FillFieldName(ddlCondition,Int32.Parse(ddlFlow.Items[ddlFlow.SelectedIndex].Value)); 
  120. FillStatisticFieldName(ddlStatistic,Int32.Parse(ddlFlow.Items[ddlFlow.SelectedIndex].Value));
  121. lbCondition.Items.Clear();
  122. }
  123. #region Web 窗体设计器生成的代码
  124. override protected void OnInit(EventArgs e)
  125. {
  126. //
  127. // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
  128. //
  129. InitializeComponent();
  130. base.OnInit(e);
  131. }
  132. /// <summary>
  133. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  134. /// 此方法的内容。
  135. /// </summary>
  136. private void InitializeComponent()
  137. {    
  138. this.ddlFlow.SelectedIndexChanged += new System.EventHandler(this.ddlFlow_SelectedIndexChanged);
  139. this.cmdAdd.Click += new System.EventHandler(this.cmdAdd_Click);
  140. this.cmdDelete.Click += new System.EventHandler(this.cmdDelete_Click);
  141. this.cmdQuery.Click += new System.EventHandler(this.cmdQuery_Click);
  142. this.Load += new System.EventHandler(this.Page_Load);
  143. }
  144. #endregion
  145. private void ddlFlow_SelectedIndexChanged(object sender, System.EventArgs e)
  146. {
  147. FillDisplayColumn();
  148. }
  149. private void cmdQuery_Click(object sender, System.EventArgs e)
  150. {
  151. string strDisplayColumn="Doc_ID,Doc_Builder_ID,Flow_ID as flow_id,Step_ID";
  152. string strCondition = "Flow_ID = " + ddlFlow.SelectedItem.Value.ToString();
  153. for(int i=0;i<cblDisplay.Items.Count;i++)
  154. {
  155. if(cblDisplay.Items[i].Selected ==true)
  156. {
  157. strDisplayColumn = strDisplayColumn + "," + cblDisplay.Items[i].Value.ToString() + " AS " + cblDisplay.Items[i].Text;
  158. }
  159. }
  160. for(int j=0;j<lbCondition.Items.Count;j++)
  161. {
  162. strCondition = strCondition + " And " + lbCondition.Items[j].Value.ToString();
  163. }
  164. // Response.Write("<script language='javascript'>alert('" + strDisplayColumn + "');</script>");
  165. UDS.Components.Database db = new Database();
  166. SqlDataReader dr;
  167. int iRow = 0;
  168. SqlParameter[] parameters = {
  169. db.MakeInParam("@SelectColumns",SqlDbType.VarChar  ,3000,strDisplayColumn),
  170. db.MakeInParam("@Conditions",SqlDbType.VarChar  ,3000,strCondition),
  171. db.MakeInParam("@FlowID",SqlDbType.Int   ,4,Int32.Parse(ddlFlow.SelectedItem.Value))
  172. };
  173. try
  174. {
  175. tabResult.Rows.Clear();
  176. db.RunProc("sp_Flow_GetDefineQueryDocument",parameters,out dr);
  177. if(dr.FieldCount>=6)
  178. {
  179. do
  180. {
  181. TableRow  tr = new TableRow();
  182. AddRow(tr,dr,iRow==0?true:false);
  183. tabResult.Rows.Add(tr);
  184. tr.BorderWidth = 1;
  185. iRow = iRow + 1;
  186. }while(dr.Read());
  187. }
  188. if(ddlStatistic.SelectedIndex >=0)
  189. AddStatistic(tabResult,dr.FieldCount-4,ddlStatistic.SelectedItem.Value.Substring(1),ddlStatistic.SelectedItem.Text,strCondition,Int32.Parse(ddlFlow.SelectedItem.Value));
  190. dr.Close();
  191. }
  192. finally
  193. {
  194. db.Close();
  195. db = null;
  196. }
  197. //Int32.Parse(ddlFlow.SelectedItem.Value)
  198. }
  199. void AddStatistic(Table tab,int ColumnSpan,string StatisticField,string StatisticName,string Condition,long FlowID)
  200. {
  201. UDS.Components.Database db = new Database();
  202. SqlDataReader dr;
  203. SqlParameter[] parameters = {
  204. db.MakeInParam("@SelectColumns",SqlDbType.VarChar  ,3000,"SUM(CONVERT(INT," + StatisticField + ")) AS " + StatisticField),
  205. db.MakeInParam("@Conditions",SqlDbType.VarChar  ,3000,Condition),
  206. db.MakeInParam("@FlowID",SqlDbType.Int   ,4,FlowID)
  207. };
  208. try
  209. {
  210. db.RunProc("sp_Flow_GetDefineQueryDocument",parameters,out dr);
  211. if(dr.Read())
  212. AddRow(tab,ColumnSpan,StatisticName +"总计:" + dr[StatisticField].ToString());
  213. }
  214. finally
  215. {
  216. db.Close();
  217. db = null;
  218. }
  219. }
  220. void AddRow(TableRow  tr,SqlDataReader dr,bool bCaption)
  221. {
  222. for(int i=4;i<dr.FieldCount;i++)
  223. {
  224. TableCell tc = new TableCell();
  225. if(bCaption==false)
  226. tc.Text = dr.GetValue(i).ToString();
  227. else
  228. {
  229. tc.Text = dr.GetName(i).ToString();
  230. tc.BackColor = Color.FromArgb(0xf8,0xf8,0xf8);
  231. }
  232. tr.Controls.Add(tc);
  233. }
  234. }
  235. void AddRow(Table  tab,int ColumSpan,string Caption)
  236. {
  237. TableRow tr = new TableRow();
  238. TableCell tc = new TableCell();
  239. tc.Text = Caption;
  240. tc.ColumnSpan = ColumSpan;
  241. tc.BackColor = Color.FromArgb(0xf8,0xf8,0xf8);
  242. tr.BorderWidth =  1;
  243. tr.Controls.Add(tc);
  244. tab.Controls.Add(tr);
  245. }
  246. private void cmdDelete_Click(object sender, System.EventArgs e)
  247. {
  248. if(lbCondition.SelectedIndex >=0)
  249. {
  250. lbCondition.Items.Remove(lbCondition.SelectedItem);
  251. }
  252. }
  253. private void cmdAdd_Click(object sender, System.EventArgs e)
  254. {
  255. string ListText;
  256. string ListValue;
  257. if(ddlCondition.SelectedIndex >=0)
  258. {
  259. switch(ddlCondition.SelectedItem.Value.Substring(0,1))
  260. {
  261. case "0":
  262. ListText = ddlCondition.SelectedItem.Text  + ddlCompare.SelectedItem.Text  + txtValue.Text;
  263. if(ddlCompare.SelectedIndex !=6)
  264. ListValue = ddlCondition.SelectedItem.Value.Substring(1) + ddlCompare.SelectedItem.Value  + "'" + txtValue.Text + "'";
  265. else
  266. ListValue = ddlCondition.SelectedItem.Value.Substring(1) + ddlCompare.SelectedItem.Value  + "'%" + txtValue.Text + "%'";
  267. lbCondition.Items.Add(new ListItem(ListText ,ListValue));
  268. break;
  269. case "1":
  270. if(ddlCompare.SelectedIndex!=6)
  271. {
  272. try
  273. {
  274. int i = Int32.Parse(txtValue.Text);
  275. ListText = ddlCondition.SelectedItem.Text  + ddlCompare.SelectedItem.Text  + txtValue.Text;
  276. ListValue =" IsNumeric(" + ddlCondition.SelectedItem.Value.Substring(1) + ")>0 and " + ddlCondition.SelectedItem.Value.Substring(1) + ddlCompare.SelectedItem.Value + txtValue.Text;
  277. lbCondition.Items.Add(new ListItem(ListText ,ListValue));
  278. }
  279. catch(Exception ex)
  280. {
  281. Response.Write("<script language='javascript'>alert('请输入数字!');</script>");
  282. }
  283. }
  284. else
  285. {
  286. Response.Write("<script language='javascript'>alert('不能用此参数!');</script>");
  287. }
  288. break;
  289. case "2":
  290. try
  291. {
  292. DateTime tt = DateTime.Parse(txtValue.Text);
  293. ListText = ddlCondition.SelectedItem.Text  + ddlCompare.SelectedItem.Text  + txtValue.Text;
  294. ListValue = ddlCondition.SelectedItem.Value.Substring(1) + ddlCompare.SelectedItem.Value  + "'" + txtValue.Text + "'";
  295. lbCondition.Items.Add(new ListItem(ListText ,ListValue));
  296. }
  297. catch(Exception ex)
  298. {
  299. Response.Write("<script language='javascript'>alert('请输入正确的日期!');</script>");
  300. //UDS.Components.Error.Log(ex.ToString());
  301. }
  302. break;
  303. case "3":
  304. break;
  305. }
  306. }
  307. }
  308. private void cblDisplay_SelectedIndexChanged(object sender, System.EventArgs e)
  309. {
  310. }
  311. }
  312. }