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

OA系统

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.SqlClient;
  6. using System.Drawing;
  7. using System.Web;
  8. using System.Web.SessionState;
  9. using System.Web.UI;
  10. using System.Web.UI.WebControls;
  11. using System.Web.UI.HtmlControls;
  12. namespace OA
  13. {
  14. /// <summary>
  15. /// MyFriends 的摘要说明。
  16. /// </summary>
  17. public class MyFriends : System.Web.UI.Page
  18. {
  19. protected System.Data.SqlClient.SqlConnection MyConnection;
  20. protected System.Web.UI.WebControls.DataGrid MyDataGrid;
  21. protected System.Web.UI.WebControls.TextBox Friend;
  22. protected System.Web.UI.WebControls.Label stats;
  23. private int totalPerson;
  24. public string PID,FID;
  25. protected System.Web.UI.HtmlControls.HtmlInputButton AddFriend;
  26. private void Page_Load(object sender, System.EventArgs e)
  27. {
  28. MyConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
  29. if(!IsPostBack)
  30. {
  31. MyDataGrid.DataSource = CreateDataSource();
  32. MyDataGrid.DataBind();
  33. Session["ndt"] = CreateDataSource();
  34. }
  35. // 在此处放置用户代码以初始化页面
  36. }
  37. private DataTable CreateDataSource() 
  38. {
  39. SqlCommand MyCommand00 = new SqlCommand("PersonID",MyConnection);
  40. MyCommand00.CommandType = CommandType.StoredProcedure;
  41. MyCommand00.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar, 50));
  42. MyCommand00.Parameters["@Name"].Value = User.Identity.Name;
  43. if(MyConnection.State.ToString()=="Closed")
  44. MyConnection.Open();
  45. SqlDataReader myReader00 =  MyCommand00.ExecuteReader();
  46. myReader00.Read(); 
  47. PID = myReader00.GetInt32(0).ToString().Trim();
  48. FID = myReader00["Friends"].ToString().Trim();
  49. Session["FID"]=CleanInput(FID);
  50. Session["PID"]=CleanInput(PID);
  51. myReader00.Close();
  52. DataTable dt = new DataTable();
  53. dt.Columns.Add(new DataColumn("PersonID", typeof(Int32)));
  54. dt.Columns.Add(new DataColumn("FriendName", typeof(string)));
  55. if(FID!="")
  56. {
  57. string [] str = RemoveDup(FID.Split(new char[] {','}));
  58. for(int i = 0; i<str.Length; i++)
  59. {
  60. if(str[i]!="")
  61. {
  62. DataRow dr = dt.NewRow();
  63. dr["PersonID"] = Int32.Parse(str[i].Trim());
  64. SqlCommand MyCommand0 = new SqlCommand("PersonName",MyConnection);
  65. MyCommand0.CommandType = CommandType.StoredProcedure;
  66. MyCommand0.Parameters.Add(new SqlParameter("@PersonID", SqlDbType.Int, 4));
  67. MyCommand0.Parameters["@PersonID"].Value = Int32.Parse(str[i].Trim());
  68. if(MyConnection.State.ToString()=="Closed")
  69. MyConnection.Open(); 
  70. SqlDataReader myReader0 =  MyCommand0.ExecuteReader();
  71. while(myReader0.Read())
  72. dr["FriendName"] = myReader0["Name"].ToString().Trim();
  73. myReader0.Close();
  74. dt.Rows.Add(dr);
  75. }
  76. }
  77. }
  78. totalPerson=dt.Rows.Count;
  79. ShowStats();
  80. return dt;
  81. }
  82. public void MyDataGrid_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e) 
  83. {
  84. DataGrid gridThatCausedEvent = (DataGrid) sender;
  85. gridThatCausedEvent.CurrentPageIndex = e.NewPageIndex;
  86. gridThatCausedEvent.DataSource = CreateDataSource();
  87. gridThatCausedEvent.DataBind();
  88. }
  89. private void ShowStats() 
  90. {
  91. if (totalPerson == 0) 
  92. {
  93. MyDataGrid.Visible = false;
  94. stats.Text = "还未设置好友!";
  95. }
  96. else 
  97. {
  98. MyDataGrid.Visible = true;
  99. int startOffset = (totalPerson > 0) ? 
  100. (MyDataGrid.CurrentPageIndex*MyDataGrid.PageSize+1) : 0;
  101. int pageEndOffset = (MyDataGrid.CurrentPageIndex+1)*(MyDataGrid.PageSize);
  102. int endOffset = (pageEndOffset > totalPerson) ? totalPerson : pageEndOffset;
  103. stats.Text = String.Format("<B>共</B>{2}<B>条记录中的</B>{0}-{1}<B>条记录",
  104. startOffset,endOffset,totalPerson);
  105. MyDataGrid.PagerStyle.Visible = (totalPerson <= MyDataGrid.PageSize) ? false : true;
  106. }
  107. }
  108. public void MyDataGrid_ItemDataBound(Object sender, DataGridItemEventArgs e) 
  109. {
  110. if((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
  111. {
  112. /* SqlCommand MyCommand1 = new SqlCommand("PersonName",MyConnection);
  113. MyCommand1.CommandType = CommandType.StoredProcedure;
  114. MyCommand1.Parameters.Add(new SqlParameter("@PersonID", SqlDbType.Int, 4));
  115. MyCommand1.Parameters["@PersonID"].Value = e.Item.Cells[3].Text;
  116. if(MyConnection.State.ToString()=="Closed")
  117. MyConnection.Open(); 
  118. SqlDataReader myReader1 =  MyCommand1.ExecuteReader();
  119. myReader1.Read();
  120. e.Item.Cells[3].Text = myReader1["Name"].ToString();
  121. myReader1.Close();
  122. MyConnection.Close();
  123. */ LinkButton myDeleteButton;
  124. myDeleteButton = (LinkButton) e.Item.Cells[2].Controls[0];
  125. myDeleteButton.Attributes.Add("onclick", @"return confirm('你确认要删除吗?');");
  126. }
  127. }
  128. public void MyDataGrid_Delete(Object sender, DataGridCommandEventArgs E) 
  129. {
  130. if(Session["PID"]!=null||Session["FID"].ToString().Trim()!="")
  131. {
  132. string [] str = Session["FID"].ToString().Split(new char[] {','});
  133. string NFID="";
  134. for(int i = 0; i<str.Length; i++)
  135. {
  136. if(str[i]==MyDataGrid.DataKeys[(int)E.Item.ItemIndex].ToString().Trim())
  137. NFID += "";
  138. else
  139. NFID += ","+ str[i];
  140. }
  141. if(NFID.Trim()!="")
  142. {
  143. NFID=NFID.Substring(1);
  144. }
  145.     else
  146. NFID="";
  147. SqlCommand MyCommand = new SqlCommand("UpdatePersonFriend",MyConnection);
  148. MyCommand.CommandType = CommandType.StoredProcedure;
  149. MyCommand.Parameters.Add(new SqlParameter("@PersonID", SqlDbType.Int, 4));
  150. MyCommand.Parameters["@PersonID"].Value = Session["PID"];
  151. MyCommand.Parameters.Add(new SqlParameter("@Friends", SqlDbType.NVarChar, 200));
  152. MyCommand.Parameters["@Friends"].Value = NFID;
  153. if(MyConnection.State.ToString()=="Closed")
  154. MyConnection.Open(); 
  155. try
  156. {
  157. MyCommand.ExecuteNonQuery();
  158. }
  159. catch (SqlException)
  160. {
  161. RegisterStartupScript("alert","<script>alert('出现错误:未能删除记录!')</" + "script>");
  162. }
  163. MyConnection.Close();
  164. if ((MyDataGrid.CurrentPageIndex!=0)&&((int)E.Item.ItemIndex==0))
  165. {
  166. if (MyDataGrid.Items.Count==1)
  167. MyDataGrid.CurrentPageIndex-=1;
  168. }
  169. MyDataGrid.DataSource = CreateDataSource();
  170. MyDataGrid.DataBind();
  171. }
  172. }
  173. #region Web 窗体设计器生成的代码
  174. override protected void OnInit(EventArgs e)
  175. {
  176. //
  177. // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
  178. //
  179. InitializeComponent();
  180. base.OnInit(e);
  181. }
  182. /// <summary>
  183. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  184. /// 此方法的内容。
  185. /// </summary>
  186. private void InitializeComponent()
  187. {    
  188. this.AddFriend.ServerClick += new System.EventHandler(this.AddFriend_ServerClick);
  189. this.Load += new System.EventHandler(this.Page_Load);
  190. }
  191. #endregion
  192. private void AddFriend_ServerClick(object sender, System.EventArgs e)
  193. {
  194. string NFID="";
  195. if(Friend.Text.Trim()=="")
  196. RegisterStartupScript("alert","<script>alert('你未选择好友!')</script>");
  197. else
  198. {
  199. string[] myData = CleanInput(Friend.Text.Trim()).Replace(",,",",").Split(new Char [] {','});
  200. string FriendSec = "";
  201. string Sumac ="";
  202. string [] str = RemoveDup(myData);
  203. for(int i = 0; i<str.Length; i++)
  204. {
  205. if(str[i]!="")
  206. {
  207. SqlCommand MyCommand1 = new SqlCommand("PersonID",MyConnection);
  208. MyCommand1.CommandType = CommandType.StoredProcedure;
  209. MyCommand1.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar, 50));
  210. MyCommand1.Parameters["@Name"].Value = str[i];
  211. if(MyConnection.State.ToString()=="Closed")
  212. MyConnection.Open();  
  213. SqlDataReader myReader1 =  MyCommand1.ExecuteReader();
  214. while(myReader1.Read()) 
  215. {
  216. FriendSec = myReader1.GetInt32(0).ToString();
  217. }
  218. myReader1.Close();
  219. if(FriendSec.Trim()!="")
  220. {
  221. Sumac += ","+FriendSec;
  222. }
  223. }
  224. }
  225. if(Sumac!="")
  226. {
  227. if(Session["FID"].ToString().Trim().Replace(",,",",")!="")
  228. {
  229. string NF = Session["FID"].ToString().Trim()+Sumac;
  230. string [] nstr = NF.Trim().Replace(",,",",").Split(new Char [] {','});
  231. string [] nnstr = RemoveDup(nstr);
  232. string NID = "";
  233. for(int i = 0; i<nnstr.Length; i++)
  234. {
  235. NID += ","+nnstr[i]; 
  236. }
  237. NFID = NID.Substring(1);                    
  238. }
  239. else
  240. NFID = Sumac.Substring(1);
  241. }
  242. SqlCommand MyCommand = new SqlCommand("UpdatePersonFriend",MyConnection);
  243. MyCommand.CommandType = CommandType.StoredProcedure;
  244. MyCommand.Parameters.Add(new SqlParameter("@PersonID", SqlDbType.Int, 4));
  245. MyCommand.Parameters["@PersonID"].Value = Session["PID"];
  246. MyCommand.Parameters.Add(new SqlParameter("@Friends", SqlDbType.NVarChar, 200));
  247. MyCommand.Parameters["@Friends"].Value = NFID;
  248. if(MyConnection.State.ToString()=="Closed")
  249. MyConnection.Open(); 
  250. try
  251. {
  252. MyCommand.ExecuteNonQuery();
  253. }
  254. catch (SqlException)
  255. {
  256. RegisterStartupScript("alert","<script>alert('出现错误:未能删除记录!')</" + "script>");
  257. }
  258. MyConnection.Close();
  259. Friend.Text = "";
  260. MyDataGrid.DataSource = CreateDataSource();
  261. MyDataGrid.DataBind();
  262. }
  263. }
  264. public static string[] RemoveDup(string[] myData)
  265. {
  266. if (myData.Length > 0)
  267. {
  268. Array.Sort(myData);
  269. int size = 1;
  270. for (int i=1; i<myData.Length; i++)
  271. if (myData[i] != myData[i-1])
  272. size++;
  273. string[] myTempData = new string[size];
  274. int j=0;
  275. myTempData[j++] = myData[0];
  276. for (int i=1; i<myData.Length; i++)
  277. if (myData[i] != myData[i-1])
  278. myTempData[j++] = myData[i];
  279. return myTempData;
  280. }
  281. return myData; 
  282. }
  283. public String CleanInput(string strIn)
  284. {
  285. return System.Text.RegularExpressions.Regex.Replace(strIn, @"[^w,]", ""); 
  286. }
  287. }
  288. }