【知识要点】
(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又恢复到了原状。