【知识要点】
(1)记录修改
【问题提出】
我们可能对客户表修改它的联系方式,如何做呢?
【在线指导】
我们在GridView新增加一列“编辑”,通过单击“修改”,打开客户的详细信息,然后输入修改的内容,然后单击“更新”可以完成。
我们之前学习了BoundField列(绑定列)的用法,我们今天再学习一下HyperLinkField列(超级链接列)的用法,可以完成修改一条记录的功能。
一、创建SqlManage.aspx
1、设计界面
(1)打开Hello项目,单击“启动页>最近使用的项目>Hello”。
(2)在“解决方案资源管理器”中添加“SqlManage.aspx”页面。
(3)从工具箱中拖1个GridView到SqlManage.aspx页面。
GridView控件ID属性分别为:gvClient
注:对GridView设置样式以及设置标题,由于前面已经多冷重复,在此不再赘述。
B.添加“删除”列
2、添加代码
(1)双击SqlManage.aspx页面空白处,在Page_Load()输入以下代码。
//连接SQL SERVER
string ConnSqlServer = "Server=www.woshicainiao.net;Database=SuperMarket;User ID=sa;Pwd=xxx";
SqlConnection Conn = new SqlConnection(ConnSqlServer);
//打开
Conn.Open();
//填充DataSet
string ClientSql = "SELECT * FROM Client";
SqlDataAdapter Adapter = new SqlDataAdapter(ClientSql, Conn);
DataSet Ds = new DataSet();
Adapter.Fill(Ds, "Client");
//执行命令
gvClient.DataSource = Ds.Tables["Client"];
gvClient.DataBind();
//关闭数据库
Conn.Close();
(2)现在我们从“解决方案资源管理器”中,选择“SqlManage.aspx”,单击右键“在浏览器中查看”。
单击“神舟电脑”客户的“修改”,然后打开如下窗口。
出错了!
由于我们还没有创建SqlEdit.aspx,现在我们就去创建它。
二、创建SqlEdit.aspx
1、设计界面
(1)打开Hello项目,单击“启动页>最近使用的项目>Hello”。
(2)在“解决方案资源管理器”中添加“SqlEdit.aspx”页面。
2、添加代码
(1)双击SqlEdit.aspx页面空白处,在Page_Load()输入以下代码。
string ClientCode = Request.QueryString["id"].ToString();
Response.Write(ClientCode);
即:
(2)现在我们从“解决方案资源管理器”中,选择“SqlManage.aspx”,单击右键“在浏览器中查看”。
再单击“修改”。我们发现“神舟电脑”客户的“客户编号”我们得到了,那么想显示客户的信息,对于我们来说不是难事了。
三、改造SqlEdit.aspx
1、设计界面
(1)打开“SqlEdit.aspx”页面。
(2)我们在界面上拖6个文本框和一个“更新”按钮。
文本框的ID属性分别为:tbClientCode、tbClientName、tbPhone、tbEmail、tbContacter、tbMobile。 按钮的ID属性分别为:btnUpdate。
注意:我们把tbClientCode客户编号设为只读,不希望更改编号信息。
2、添加代码
(1)双击SqlEdit.aspx页面空白处,在Page_Load()处:
string ClientCode = Request.QueryString["id"].ToString();
Response.Write(ClientCode);
把以上代码替换为以下代码, 即:
//连接SQL SERVER
string ConnSqlServer = "Server=www.woshicainiao.net;Database=SuperMarket;User ID=sa;Pwd=xxx";
SqlConnection Conn = new SqlConnection(ConnSqlServer);
//从URL获取客户编号
string ClientCode = Request.QueryString["id"].ToString().Trim();
//打开
Conn.Open();
//读取Client表中的内容
string SelectSql = "SELECT * FROM Client WHERE cClientCode=@ClientCode";
SqlCommand Comm = new SqlCommand(SelectSql, Conn);
Comm.Parameters.Add("@ClientCode", SqlDbType.VarChar, 8);
Comm.Parameters["@ClientCode"].Value = ClientCode;
//Comm类似SQL SERVER查询编辑器中的"!执行"按纽
SqlDataReader DrClient = Comm.ExecuteReader();
//DataReader关联Comm执行的"SELECT * FROM Client"查询结果
//客户信息显示在文本框中
if (DrClient.Read())
{
tbClientCode.Text = DrClient["cClientCode"].ToString();
tbClientName.Text = DrClient["vClientName"].ToString();
tbPhone.Text = DrClient["vPhone"].ToString();
tbEmail.Text = DrClient["vEmail"].ToString();
tbContacter.Text = DrClient["vContacter"].ToString();
tbMobile.Text = DrClient["cMobile"].ToString();
}
DrClient.Close();
//关闭
Conn.Close();
(2)现在我们从“解决方案资源管理器”中,选择“SqlManage.aspx”,单击右键“在浏览器中查看”。
再单击“修改”。我们发现“神舟电脑”客户的信息,已经显示出来了。
四、为SqlEdit.aspx添加“更新”。
1、设计界面
(1)打开“SqlEdit.aspx”页面。
(2)双击“更新”按钮。
2、添加代码
(1)双击SqlEdit.aspx的“更新”按钮,在btnUpdate_Click()处:
//连接SQL SERVER
string ConnSqlServer = "Server=www.woshicainiao.net;Database=SuperMarket;User ID=sa;Pwd=xxx";
SqlConnection Conn = new SqlConnection(ConnSqlServer);
//从URL获取客户编号
string ClientCode = Request.QueryString["id"].ToString().Trim();
//获取客户信息
string ClientName = tbClientName.Text;
string Phone = tbPhone.Text;
string Email = tbEmail.Text;
string Contacter = tbContacter.Text;
string Mobile = tbMobile.Text;
//打开
Conn.Open();
//读取Client表中的内容
string SelectSql = "UPDATE Client SET vClientName=@ClientName,vPhone=@Phone,vEmail=@Email,vContacter=@Contacter,cMobile=@Mobile WHERE cClientCode=@ClientCode";
SqlCommand Comm = new SqlCommand(SelectSql, Conn);
Comm.Parameters.Add("@ClientCode", SqlDbType.VarChar, 8);
Comm.Parameters.Add("@ClientName", SqlDbType.VarChar, 30);
Comm.Parameters.Add("@Phone", SqlDbType.VarChar, 30);
Comm.Parameters.Add("@Email", SqlDbType.VarChar, 30);
Comm.Parameters.Add("@Contacter", SqlDbType.VarChar, 30);
Comm.Parameters.Add("@Mobile", SqlDbType.VarChar, 11);
Comm.Parameters["@ClientCode"].Value = ClientCode;
Comm.Parameters["@ClientName"].Value = ClientName;
Comm.Parameters["@Phone"].Value = Phone;
Comm.Parameters["@Email"].Value = Email;
Comm.Parameters["@Contacter"].Value = Contacter;
Comm.Parameters["@Mobile"].Value = Mobile;
//Comm类似SQL SERVER查询编辑器中的"!执行"按纽
Comm.ExecuteNonQuery();
tbClientName.Text = "";
tbPhone.Text = "";
tbEmail.Text = "";
tbContacter.Text = "";
tbMobile.Text = "";
//关闭
Conn.Close();
Response.Write("修改成功!");
(2)现在我们从“解决方案资源管理器”中,选择“SqlManage.aspx”,单击右键“在浏览器中查看”。
再单击“修改”。我们发现“神舟电脑”客户的信息,已经显示出来了。然后我们把手机号码修改为:
我们单击“更新”按钮之后。
修改成功了!你可能感觉挺兴奋的!我们在数据库中看一下,好像手机号码并没有改!只差一步!一步之遥!
(3)双击SqlEdit.aspx页面空白处,在Page_Load()处添加两行代码:
if (!Page.IsPostBack)
{
//连接SQL SERVER
string ConnSqlServer = "Server=www.woshicainiao.net;Database=SuperMarket;User ID=sa;Pwd=xxx";
SqlConnection Conn = new SqlConnection(ConnSqlServer);
//从URL获取客户编号
string ClientCode = Request.QueryString["id"].ToString().Trim();
//打开
Conn.Open();
//读取Client表中的内容
string SelectSql = "SELECT * FROM Client WHERE cClientCode=@ClientCode";
SqlCommand Comm = new SqlCommand(SelectSql, Conn);
Comm.Parameters.Add("@ClientCode", SqlDbType.VarChar, 8);
Comm.Parameters["@ClientCode"].Value = ClientCode;
//Comm类似SQL SERVER查询编辑器中的"!执行"按纽
SqlDataReader DrClient = Comm.ExecuteReader();
//DataReader关联Comm执行的"SELECT * FROM Client"查询结果
if (DrClient.Read())
{
tbClientCode.Text = DrClient["cClientCode"].ToString();
tbClientName.Text = DrClient["vClientName"].ToString();
tbPhone.Text = DrClient["vPhone"].ToString();
tbEmail.Text = DrClient["vEmail"].ToString();
tbContacter.Text = DrClient["vContacter"].ToString();
tbMobile.Text = DrClient["cMobile"].ToString();
}
DrClient.Close();
//关闭
Conn.Close();
}
(4)我们再试下,完全OK了。
讲解:
if (!Page.IsPostBack){}表示第一次才执行其中的代码。
对于本案例,我们第一次希望显示所选择“修改”的客户,输入新的内容,如果不加!Page.IsPostBack()则提交到数据库的仍然是老内容。