【知识要点】
(1)记录速改(取消)
【问题提出】
我们打算修改部分客户的手机号码,如果按第39章那样做,每改一个客户手机号码都要打开一个新页面修改,我们打算像下面一样去做!
【在线指导】
如果我们想快速修改一列或者两列内容,使用“第39章、记录修改”则有些麻烦,我们更希望直接修改,我们称之为“速改”。
一、创建SqlManage.aspx
1、设计界面
(1)打开Hello项目,单击“启动页>最近使用的项目>Hello”。
(2)在“解决方案资源管理器”中添加“SqlManage-2.aspx”页面。
(3)从工具箱中拖1个GridView到SqlManage-2.aspx页面。
GridView控件ID属性分别为:gvClient
注:对GridView设置样式以及设置标题,由于前面已经多冷重复,在此不再赘述。
(4)选中GridView,单击“>”按钮,然后单击“编辑列”。
(5)在“字段”窗口中,添加“CommandField”中的“编辑、更新、取消”选项,在外观的“HeaderText”属性为:速改。
2、添加代码
(1)双击SqlManage-2.aspx页面空白处,在Page_Load()输入以下代码。
if (!Page.IsPostBack)
{
string ClientSql = "SELECT * FROM Client";
DataAccess.LoadGridView(ClientSql, gvClient, "cClientCode");
}
(2)现在我们从“解决方案资源管理器”中,选择“SqlManage-2.aspx”,单击右键“在浏览器中查看”。
单击“联想电脑”客户的“编辑”,出错了!
由于我们缺少gvClient_RowEditing事件,我们现在就去创建它。
二、创建gvClient_RowEditing事件
1、设计界面
(1)从界面上选择“gvClient”控件。
(2)然后从“属性”窗口,单击“闪电”符号,双击“RowEditing”。
2、添加代码
(1)双击SqlManage-2.aspx页面空白处,在gvClient_RowEditing()输入以下代码。
gvClient.EditIndex = e.NewEditIndex;
string ClientSql = "SELECT * FROM Client";
DataAccess.LoadGridView(ClientSql, gvClient, "cClientCode");
(2)现在我们从“解决方案资源管理器”中,选择“SqlManage-2.aspx”,单击右键“在浏览器中查看”。
单击“编辑”。我们发现所有列都变成文本框了,我们只希望“手机号码”列可以快速修改。
三、设置不可修改的列为ReadOnly
1、设计界面
(1)从界面上选中GridView,单击“>”按钮,然后单击“编辑列”。
(2)我们依次为编号、客户名称、电话、电子邮件、联系人的ReadOnly属性设为True。
(3)现在我们从“解决方案资源管理器”中,选择“SqlManage-2.aspx”,单击右键“在浏览器中查看”。
单击“修改”,我们发现此时只有手机号码变为可编辑的了。
(4)我们此时单击“更新”、“取消”发现都会出错!
由于我们缺少gvClient_RowUpdating、gvClient_RowCanceling事件,我们现在就去创建它。
四、创建gvClient_RowUpdating、gvClient_RowCanceling事件。
1、设计界面
(1)从界面上选择“gvClient”控件。
(2)然后从“属性”窗口,单击“闪电”符号,双击“RowUpdating、RowCancelingEdit”。
2、添加代码
(1)双击SqlManage-2.aspx页面空白处,在gvClient_RowCanceling()输入以下代码。
gvClient.EditIndex = -1;
string ClientSql = "SELECT * FROM Client";
DataAccess.LoadGridView(ClientSql, gvClient, "cClientCode");
(2)现在我们从“解决方案资源管理器”中,选择“SqlManage-2.aspx”,单击右键“在浏览器中查看”。
单击“编辑”。
单击“取消”,又恢复到了原状。
如果修改了手机号码,单击更新好像没有变化啊,请听下章分解。