第42章、记录速改

 

【知识要点】
  (1)记录速改(更新)

【问题提出】
  我们打算修改部分客户的手机号码,如果按第39章那样做,每改一个客户手机号码都要打开一个新页面修改,我们打算像下面一样去做!

【在线指导】

  在上一章我们顺利完成了记录的“编辑”和“取消”功能,但最为核心的“更新”功能则留在了本章解决,让我们加油,攻克这个小山峰!

一、获取当前行的客户编号和手机号码

  如果我们能够获取到当前行的客户编号和手机号码,那么我们使用"UPDATE Client SET cMoible='xxx' WHERE cClientCode='xxx'"则很容易实现我们的目的。我们现在努力完成第一步,获取客户编号和手机号码。

1、设计界面

  (1)打开“SqlManage-2.aspx”页面。

  

2、添加代码          

  (1)双击SqlManage-2.aspx页面空白处,在gvClient_RowUpdating()输入以下代码。

string ClientCode = gvClient.Rows[e.RowIndex].Cells[0].Text.Trim();
string Mobile = ((TextBox)gvClient.Rows[e.RowIndex].Cells[5].Controls[0]).Text.Trim();

Response.Write(ClientCode);
Response.Write("<br />");
Response.Write(Mobile);

 

  (2)现在我们从“解决方案资源管理器”中,选择“SqlManage-2.aspx”,单击右键“在浏览器中查看”。 

  单击“编辑”。

  单击“更新”。

  讲解:

客户编号:
  gvClient.Rows[e.RowIndex].Cells[0].Text.Trim()其中:
  e.RowIndex代表当前行的索引值(第1行是0,依次类推),所以Rows[e.RowIndex]则代表当前行;
  Cells[0]代表第1列,依次类推;
  Rows[e.RowIndex].Cells[0]则代表当前行第1列;
  gvClient.Rows[e.RowIndex].Cells[0]则代表gvClient的当前行第1列;
  gvClient.Rows[e.RowIndex].Cells[0].Text则代表gvClient的当前行第1列的文本,即00000002。
-------------------------------------------------------------------------------------------
手机号码:
  ((TextBox)gvClient.Rows[e.RowIndex].Cells[5].Controls[0]).Text.Trim()其中:
  e.RowIndex代表当前行的索引值(第1行是0,依次类推),所以Rows[e.RowIndex]则代表当前行;
  Cells[5]代表第6列,依次类推;
  Rows[e.RowIndex].Cells[5]则代表当前行第6列;
  gvClient.Rows[e.RowIndex].Cells[5]则代表gvClient的当前行第6列;
  gvClient.Rows[e.RowIndex].Cells[0].Controls[0].Text则代表gvClient的当前行第6列的控件(即文本框控件,如果有多个,也是从0开始),然后强制转化为文本框,再获取到其Text值即13901043888。

  

二、手机号码更新

1、设计界面

   (1)打开“SqlManage-2.aspx”页面。

  

2、添加代码          

  (1)双击SqlManage-2.aspx页面空白处,在gvClient_RowUpdating()输入以下代码。

//获取客户编号和手机号码
string ClientCode = gvClient.Rows[e.RowIndex].Cells[0].Text.Trim();
string Mobile = ((TextBox)gvClient.Rows[e.RowIndex].Cells[5].Controls[0]).Text.Trim();

//SQL更新语句
string UpdateSql = "UPDATE Client SET cMobile=@Mobile WHERE cClientCode=@ClientCode";

//更新
SqlConnection ConnClient = DataAccess.GetConnection();
SqlCommand CommClient = new SqlCommand(UpdateSql, ConnClient);

CommClient.Parameters.Add("@Mobile", SqlDbType.Char, 11);
CommClient.Parameters.Add("@ClientCode", SqlDbType.Char, 8);
CommClient.Parameters["@Mobile"].Value = Mobile;
CommClient.Parameters["@ClientCode"].Value = ClientCode;

CommClient.ExecuteNonQuery();

 

  (2)现在我们从“解决方案资源管理器”中,选择“SqlManage-2.aspx”,单击右键“在浏览器中查看”。 

  单击“编辑”。

  单击“更新”。

  讲解:

  本段代码,我们已经在第32章讲解过了,如果你理解有困难,请参考:
  第32章、更新一条记录

  我们希望修改成新的号码之后,GridView还能够还原!实际上有了“取消”的经验,这是很简单的。

三、GridView恢复原状

   1、为gvClient_RowUpdating()加上以下红色代码:

//获取客户编号和手机号码
string ClientCode = gvClient.Rows[e.RowIndex].Cells[0].Text.Trim();
string Mobile = ((TextBox)gvClient.Rows[e.RowIndex].Cells[5].Controls[0]).Text.Trim();

//SQL更新语句
string UpdateSql = "UPDATE Client SET cMobile=@Mobile WHERE cClientCode=@ClientCode";

//更新
SqlConnection ConnClient = DataAccess.GetConnection();
SqlCommand CommClient = new SqlCommand(UpdateSql, ConnClient);

CommClient.Parameters.Add("@Mobile", SqlDbType.Char, 11);
CommClient.Parameters.Add("@ClientCode", SqlDbType.Char, 8);
CommClient.Parameters["@Mobile"].Value = Mobile;
CommClient.Parameters["@ClientCode"].Value = ClientCode;

CommClient.ExecuteNonQuery();

gvClient.EditIndex = -1;
string ClientSql = "SELECT * FROM Client";
DataAccess.LoadGridView(ClientSql, gvClient, "cClientCode");

//关闭
DataAccess.DisConnection();

 

  (2)现在我们从“解决方案资源管理器”中,选择“SqlManage-2.aspx”,单击右键“在浏览器中查看”。 

  单击“编辑”。

  单击“更新”,手机号码变为新的号码之后,GridView又恢复到了原状。

 

你可能感兴趣的:(第42章、记录速改)