ManageMessage.aspx.cs
上传用户:tree100901
上传日期:2007-06-03
资源大小:2295k
文件大小:10k
源码类别:

OA系统

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. using System.ComponentModel;
  4. using System.IO;
  5. using System.Data.SqlClient;
  6. using System.Data;
  7. using System.Drawing;
  8. using System.Web;
  9. using System.Web.SessionState;
  10. using System.Web.UI;
  11. using System.Web.UI.WebControls;
  12. using System.Web.UI.HtmlControls;
  13. namespace OA
  14. {
  15. /// <summary>
  16. /// ManageMessage 的摘要说明。
  17. /// </summary>
  18. public class ManageMessage : System.Web.UI.Page
  19. {
  20. protected System.Data.SqlClient.SqlConnection MyConnection;
  21. protected System.Web.UI.WebControls.DataGrid MyDataGrid;
  22. private int totalMessage;
  23. protected System.Web.UI.WebControls.Label stats;
  24. public string PID;
  25. private void Page_Load(object sender, System.EventArgs e)
  26. {
  27. CheckUser CHU = new CheckUser();
  28. CHU.UserName = User.Identity.Name;
  29. PID = CHU.UserID.ToString();
  30. if(CHU.Is_FileManager() == false)
  31. Response.Write("<script>alert('对不起,你没有查看此页面的权限!');history.back(2)</" + "script>");
  32. MyConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
  33. if(!IsPostBack)
  34. {
  35. MyDataGrid.DataSource = CreateDataSource();
  36. MyDataGrid.DataBind();
  37. }
  38. }
  39. private ICollection CreateDataSource() 
  40. {
  41. MyConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
  42. SqlDataAdapter MyCommand = new SqlDataAdapter("SelectAllMessage",MyConnection);
  43. MyCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
  44. DataSet ds = new DataSet();
  45. MyCommand.Fill(ds,"Message");
  46. MyConnection.Close();
  47. DataView dv = ds.Tables[0].DefaultView;
  48. totalMessage=ds.Tables[0].Rows.Count;
  49. if (Session["tableAllMessage"] == null)
  50. Session["tableAllMessage"] = ds.Tables[0];
  51. if (Session["sorterAllMessage"] == null)
  52. {
  53. Session["sorterAllMessage"] ="Date";
  54. Session["sortAllMessage"]=" DESC";
  55. }
  56. dv.Sort = (String) Session["sorterAllMessage"]+(String) Session["sortAllMessage"];
  57. ShowStats();
  58. return dv;
  59. }
  60. public void MyDataGrid_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e) 
  61. {
  62. DataGrid gridThatCausedEvent = (DataGrid) sender;
  63. gridThatCausedEvent.CurrentPageIndex = e.NewPageIndex;
  64. gridThatCausedEvent.DataSource = CreateDataSource();
  65. gridThatCausedEvent.DataBind();
  66. }
  67. public void MyDataGrid_Sort(Object sender, DataGridSortCommandEventArgs e) 
  68. {
  69. Session["sorterAllMessage"] = (string)e.SortExpression;
  70. Session["sortAllMessage"]=(Session["sortAllMessage"].ToString()==" ASC")?
  71. " DESC":" ASC";
  72. MyDataGrid.DataSource = CreateDataSource();
  73. MyDataGrid.DataBind();
  74. foreach (DataGridItem item in MyDataGrid.Controls[0].Controls)
  75. {
  76. if (item.ItemType == ListItemType.Header)
  77. {
  78. Label lb =(Label)item.FindControl((string)Session["sorterAllMessage"]);
  79. lb.Text = (Session["sortAllMessage"].ToString()==" DESC")?
  80. "↓":"↑";
  81. }
  82. }
  83. }
  84. private void ShowStats() 
  85. {
  86. if (totalMessage == 0) 
  87. {
  88. MyDataGrid.Visible = false;
  89. stats.Text = "未找到符合条件的记录!";
  90. }
  91. else 
  92. {
  93. MyDataGrid.Visible = true;
  94. int startOffset = (totalMessage > 0) ? 
  95. (MyDataGrid.CurrentPageIndex*MyDataGrid.PageSize+1) : 0;
  96. int pageEndOffset = (MyDataGrid.CurrentPageIndex+1)*(MyDataGrid.PageSize);
  97. int endOffset = (pageEndOffset > totalMessage) ? totalMessage : pageEndOffset;
  98. string SortName;
  99. switch(Session["sorterAllMessage"].ToString())
  100. {
  101. case "Contents":
  102. SortName = "信息内容";
  103. break;
  104. case "Date":
  105. SortName="发送时间";
  106. break;
  107. case "AccepterID":
  108. SortName = "接收人";
  109. break;
  110. case "PersonID":
  111. SortName = "发送人";
  112. break;
  113. default:
  114. SortName="发送时间";
  115. break;
  116. }
  117. stats.Text = String.Format("<B>共</B>{2}<B>条记录中的</B>{0}-{1}<B>条记录  根据</B>{3}<B>排序</B>",
  118. startOffset,endOffset,totalMessage,SortName);
  119. MyDataGrid.PagerStyle.Visible = (totalMessage <= MyDataGrid.PageSize) ? false : true;
  120. }
  121. }
  122. public void MyDataGrid_ItemCreated(Object sender, DataGridItemEventArgs e) 
  123. {
  124. if((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
  125. {
  126. }
  127. if((e.Item.ItemType == ListItemType.Header))
  128. {
  129. for(int i = 0; i<4; i++)
  130. {
  131. Label lb = new Label();
  132. if(i==0)
  133. lb.ID = "Contents";
  134. if(i==1)
  135. lb.ID = "Date";
  136. if(i==2)
  137. lb.ID = "AccepterID";
  138. if(i==3)
  139. lb.ID = "PersonID";
  140. lb.Text = "↓";
  141. e.Item.Cells[i].Controls.Add(lb);
  142. }
  143. }         
  144. }
  145. public void MyDataGrid_ItemDataBound(Object sender, DataGridItemEventArgs e) 
  146. {
  147. if((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
  148. {
  149. string MessageID = DataBinder.Eval(e.Item.DataItem, "MessageID").ToString();
  150. string AID =e.Item.Cells[2].Text.Trim().Replace("(","").Replace(")","");
  151. string [] str = AID.Split(new char[] {','});
  152. string Accepter="";
  153. for(int i=0; i<str.Length; i++)
  154. {
  155. SqlCommand MyCommand0 = new SqlCommand("PersonName",MyConnection);
  156. MyCommand0.CommandType = CommandType.StoredProcedure;
  157. MyCommand0.Parameters.Add(new SqlParameter("@PersonID", SqlDbType.Int, 4));
  158. MyCommand0.Parameters["@PersonID"].Value = str[i];
  159. if(MyConnection.State.ToString()=="Closed")
  160. MyConnection.Open(); 
  161. SqlDataReader myReader0 =  MyCommand0.ExecuteReader();
  162. while(myReader0.Read())
  163. {
  164. Accepter += ","+myReader0["Name"].ToString().Trim();
  165. }
  166. myReader0.Close();
  167. MyConnection.Close(); 
  168. }
  169. e.Item.Cells[2].ToolTip = Accepter.Substring(1);
  170. e.Item.Cells[2].Style["cursor"] = "hand";
  171. if(Accepter.Length>11)
  172. Accepter = Accepter.Substring(1,10)+"......";
  173. else
  174. Accepter = Accepter.Substring(1);
  175. e.Item.Cells[2].Text = Accepter;
  176. string Contents = DataBinder.Eval(e.Item.DataItem, "Contents").ToString();
  177. string Cont = System.Text.RegularExpressions.Regex.Replace(Contents,"<[^>]+>","");
  178. if(Cont.Length>15)
  179. Cont = Cont.Substring(0,15)+"......";
  180. e.Item.Cells[0].Text = "<a href = javascript:window.open('MessageDetails.aspx?MessageID="+MessageID+"','_blank','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,revisable=no,left=100,top=0,height=303');window.close();>"+Cont+"</a>";
  181. SqlCommand MyCommand1 = new SqlCommand("PersonName",MyConnection);
  182. MyCommand1.CommandType = CommandType.StoredProcedure;
  183. MyCommand1.Parameters.Add(new SqlParameter("@PersonID", SqlDbType.Int, 4));
  184. MyCommand1.Parameters["@PersonID"].Value = e.Item.Cells[3].Text;
  185. if(MyConnection.State.ToString()=="Closed")
  186. MyConnection.Open(); 
  187. SqlDataReader myReader1 =  MyCommand1.ExecuteReader();
  188. myReader1.Read();
  189. e.Item.Cells[3].Text = myReader1["Name"].ToString();
  190. myReader1.Close();
  191. MyConnection.Close(); 
  192. if(e.Item.Cells[4].Text.Trim()!=null)
  193. e.Item.Cells[4].Text="<a href=javascript:window.open('MessageAttachment\\"+e.Item.Cells[4].Text+"','','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,revisable=no,left=100,top=0');window.close();>"+e.Item.Cells[4].Text+"</a>";
  194. LinkButton myDeleteButton1;
  195. LinkButton myDeleteButton2;
  196. myDeleteButton1 = (LinkButton) e.Item.Cells[5].Controls[0];
  197. myDeleteButton1.Attributes.Add("onclick", @"window.open('ViewMessageState.aspx?MessageID="+MessageID+"','_blank','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,revisable=no,left=100,top=0,width=188,height="+str.Length*35+"');return false;");
  198. myDeleteButton2 = (LinkButton) e.Item.Cells[6].Controls[0];
  199. myDeleteButton2.Attributes.Add("onclick", @"return confirm('你确认要删除此信息吗?');");
  200. }
  201. }
  202. public void MyDataGrid_Delete(Object sender, DataGridCommandEventArgs E) 
  203. {
  204. string MA="";
  205. SqlCommand MyCommand0 = new SqlCommand("SelectMessageAttachment",MyConnection);
  206. MyCommand0.CommandType = CommandType.StoredProcedure;
  207. MyCommand0.Parameters.Add(new SqlParameter("@MessageID", SqlDbType.Int, 4));
  208. MyCommand0.Parameters["@MessageID"].Value = MyDataGrid.DataKeys[(int)E.Item.ItemIndex];
  209. if(MyConnection.State.ToString()=="Closed")
  210. MyConnection.Open(); 
  211. SqlDataReader myReader0 =  MyCommand0.ExecuteReader();
  212. while(myReader0.Read())
  213. {
  214. MA = myReader0["Attachment"].ToString();
  215. }
  216. myReader0.Close();
  217. MyConnection.Close(); 
  218. if((MA.Trim()!="")&&(File.Exists(Server.MapPath("MessageAttachment\"+MA))))
  219. File.Delete(Server.MapPath("MessageAttachment\"+MA));
  220. SqlCommand MyCommand = new SqlCommand("DeleteSenderMessage",MyConnection);
  221. MyCommand.CommandType = CommandType.StoredProcedure;
  222. MyCommand.Parameters.Add(new SqlParameter("@MessageID", SqlDbType.Int, 4));
  223. MyCommand.Parameters["@MessageID"].Value = MyDataGrid.DataKeys[(int)E.Item.ItemIndex];
  224. if(MyConnection.State.ToString()=="Closed")
  225. MyConnection.Open(); 
  226. try
  227. {
  228. MyCommand.ExecuteNonQuery();
  229. }
  230. catch (SqlException)
  231. {
  232. RegisterStartupScript("alert","<script>alert('出现错误:未能删除记录!')</" + "script>");
  233. }
  234. MyConnection.Close();
  235. if ((MyDataGrid.CurrentPageIndex!=0)&&((int)E.Item.ItemIndex==0))
  236. {
  237. if (MyDataGrid.Items.Count==1)
  238. MyDataGrid.CurrentPageIndex-=1;
  239. }
  240. MyDataGrid.DataSource = CreateDataSource();
  241. MyDataGrid.DataBind();
  242. Response.Write("<script>opener.location.href=opener.location.href;opener=null;window.close();</"+"script>");
  243. }
  244. #region Web 窗体设计器生成的代码
  245. override protected void OnInit(EventArgs e)
  246. {
  247. //
  248. // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
  249. //
  250. InitializeComponent();
  251. base.OnInit(e);
  252. }
  253. /// <summary>
  254. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  255. /// 此方法的内容。
  256. /// </summary>
  257. private void InitializeComponent()
  258. {    
  259. this.Load += new System.EventHandler(this.Page_Load);
  260. }
  261. #endregion
  262. }
  263. }