GridView 自动绑定 借助DetailsView与EmptyDataTemplate新增记录

来源:互联网 发布:运动摄像机 知乎 编辑:程序博客网 时间:2024/05/17 09:07

1.注意:

实现新建功能的时候,不能让gridview允许排序,否则会出错:“数据源不允许排序”!

2.添加记录:

Gridview不支持添加新记录的功能。

3.解决办法:

有很多方法可以解决这个问题,

方法1:

你可以在gridview里添加一个链接,让这个链接跳转到另外一个页面,用户添加完记录之后再返回原来的

gridview页面。

缺点:

增加了与服务器的通信量,也使操作显得比较繁琐。

推荐方法2:使用DetailsView结合Gridview的EmptyTemplate模板。

4.思路:

1> 在gridview里增加一个ButtonField,并设置它的CommandName属性为Insert。
用户通过单击插入按钮来增加新的记录。
你可以设置按钮的commandname然后设置detailsview的默认状态为插入。

使用如下的技术增加新记录:
2> 在GridView的下面放置一个DetailsView控件。
用户可以通过DetailsView增加新记录,然后这条新记录就会显示在GridView里。

通过一个超级链接使用户连接到另一个使用DetailsView增加新记录的web form。
一旦记录被添加后就会返回之前的页。

缺点:
第一种方法占用了太多的屏幕空间,即使你增加的只是很少的记录。 所以它不是“主要用于编辑,偶尔增

加记录”情况下的好的选择。
第二种选择需要额外创建一个web form,因为来回导航会需要向服务器发送更多的请求。

GridView控件提供了一个被称作Empty Data Template的模板。
当GridView里没有数据显示的时候这个模板就会显示出来。 一般在没有数据显示的时候,这个模板会被用

于显示一个给出示给用户的状态信息。 但是,你也可以为了别的目的而是用它。你可以使用它来给

GridView增加新的记录。

5.使用:

1> 在GridView中增加一个ButtonField,并设置它的CommandName属性为Insert。
用户通过单击插入按钮来增加新的记录。

2> 右键单击GridView选择编辑模板 – Empty Data Template菜单选项。
拖拽DetailsView控件到Empty Data Template内,设置它的DataSourceID属性为SqlDataSource1。
同时设置它的DefaultMode属性为Insert。

当Empty Data Template显示的时候,DetailsView将会做好插入记录之前的准备。

3> GridView的RowCommand事件处理的代码

如果我们设置了GridView的DataSourceID属性为空,然后调用GridView的DataBind()方法的话, 那么

GridView将不会有任何数据,从而显示Empty Data Template。

4> DetailsView控件的ItemInserted事件
当DetailsView成功的插入了一条新记录的时候,这个ItemInserted事件就会被触发。

在ItemInserted事件内写出如下代码:

再次设置了GridView的DataSourceID属性为SqlDataSource1,然后再次绑定它。 这样GridView就可以显示

出最新插入的记录。

6.问题:
在指定数据源后会自动进行数据绑定,而不用再调用DataBind()方法。

提示:取消类似重置功能,属于内置事件,并非返回功能。

原创粉丝点击