您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> asp.net >> 正文

ASP.NET立即上手教程 10

作者:作者:未…    信息学院来源:网络收集    点击数:    更新时间:2006-8-28 我要参与讨论

  在SQL数据库中更新数据
在web应用程序中更新数据库常常是一件棘手的事情。DataGrid控件提供了一些内建的支持
,使得更新数据库变得容易。要想编辑行记录,DataGrid支持一个整数类型的EditItemIn
dex属性,他用来指明表格控件的哪一行是可编辑的。当设定该属性之后,DataGrid中对应
的行用输入框来代替标签。值-1表示没有可编辑的行。Asp.net页面可以在服务器端表单中
包含DataGrid控件,通过DataGrid控件的对象模型来访问可编辑的数据。
为了判断哪一行将被编辑,你需要接收一些用户的输入,以此来判断他们将编辑哪一行。
DataGrid可以包含EditCommandColumn属性,它提供了一个连接,用以激活三个特定的事件
:EditCommand、UpdateCommand、和CancelCommand。EditCommandColumn被加在DataGrid
的列集合中,如下面的例子所示:
...
OnEditCommand="MyDataGrid_Edit"
OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update"
DataKeyField="au_id"
>
在DataGrid标签上,可以绑定每一个从EditCommandColumn激活的命令事件句柄。这些句柄
的DataGridCommandEventArgs参数可以让你直接访问从客户端选择的可编辑行索引值。注
意,为了使更改生效,你需要重新绑定DataGrid,像下面的例子这样:
public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs E) {
MyDataGrid.EditItemIndex = (int)E.Item.ItemIndex;
BindGrid();
}
当编辑DataGrid中的行的时候,EditCommandColumn提供了可供使用的两个连接:Update
和 Cancel。如果客户端选择了cancel,你只需将EditItemIndex设置为-1。如果客户端选
择了Update,你需要对数据库执行你的更新命令。执行更新命令的时候,你需要知道被编
辑行在数据库中对应记录的主键。为了支持这个功能,DataGrid提供了一个DataKeyField
属性,可以用来设置主键对应的字段。在绑定到UpdateCommand的事件句柄中,你可以从D
ataGrid的数据键集合取得键的名称。你可以使用事件的ItemIndex来索引集合,像下面的
例子:
myCommand.Parameters["@Id"].Value = MyDataGrid.DataKeys[(int)E.Item.ItemIndex]
;
;
在更新事件句柄结束以后,将EditItemIndex设置为-1。下面的例子演示了这种情况。
C# DataGrid6.aspx
[运行] | [源代码] 前面的例子中有一个问题,那就是当编辑一行的时候,主键字段(au
_id)也提供了一个文本输入框。因为需要这个值来确定数据库中的哪一行记录被更新,所
以你可能不希望客户端改变这个值。幸运的是,你可以通过详细指定每一个可编辑行的外
观,来禁止该列提供文本输入框。具体方法是使用BoundColumn控件来分配每一列的数据字
段,在DataGrid的列集合定义每一行。使用这种技术可以实现列的完全控制,当然也包括
ReadOnly属性。对于au_id列,你可以设置它的ReadOnly属性为true。这样,当一行处于编
辑模式的时候,au_id列依然显示为一个文本标签,而不是文本输入框。下面的例子演示了
这种技术。
C# DataGrid7.aspx
[运行] | [源代码] BoundColumn控件并非DataGrid的列集合中可以设置属性的唯一控件。
你也可以指定TemplateColumn,它对列的内容提供了完全的控制。模板对内容的显示更具
有随意性,你可以在DataGrid的列中提供你喜欢的任何控件,也包括服务器端控件。下面
的例子演示了如何使用TemplateColumn,对"State"列使用下拉列表服务器控件,对"Cont
ract"列使用复选框html控件。Asp.net数据绑定语法用于在模板中输出数据字段的值。注
意在编辑行中映射下拉列表和复选框到的state时候有一点小技巧。
C# DataGrid8.aspx
[运行] | [源代码]
如同在TemplateColumn中放置下拉列表框或者复选框一样,你也可以在其中放置其他控件
。下面的例子中,添加了一个Validator验证控件,在执行更新之前检查客户端的输入。
C# DataGrid9.aspx
[运行] | [源代码]
在SQL数据库中删除数据
从数据库中删除记录非常类似于更新或者插入命令,但是你依然需要确定表格中要删除的
特定行。可以添加到DataGrid列中的另一个控件是ButtonColumn,它仅仅提供了一个按钮
控件。ButtonColumn支持一个CommandName属性,可以设置为“Delete”。在DataGrid上,
当你执行删除操作的时候,需要对DeleteCommand绑定一个事件句柄。此外,你需要使用数
据键(DataKeys)集合来确定客户端选定的行。下面的例子演示了这一过程:
C# DataGrid10.aspx
[运行] | [源代码]
从SQL数据库中排序
对于任何表格来说,常常要求它对所包含的数据具有排序的能力。然而,DataGrid控件本
身并不具有数据排序的功能。它通过用户单击要对数据排序的列标题,调用事件句柄。当
DataGrid的 AllowSorting属性被设置为true,DataGrid就为列标题提供了一个超链接,用
以对表格激活Sort命令。你可以给DataGrid的OnSortCommand属性设置句柄,来处理用户的
单击。列的名字作为SortExpression 的属性,传递给DataGridSortCommandEventArgs的参
数。该参数可以用来设置绑定到

[1] [2] 下一页

在google里搜索更多ASP.NET立即上手教程 10

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明