ASP.NET之GridView常用方法总结

本文深入介绍了ASP.NET中GridView控件的使用方法,包括各种列字段的功能特性及其应用场景,同时还解析了GridView的重要事件及其用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.     列字段

BoundField显示数据源中某个字段的值。这是 GridView 控件的默认列类型。

ButtonField: GridView 控件中的每个项显示一个命令按钮。

CheckBoxField GridView 控件中的每一项显示一个复选框。此列字段类型通常用于显示具有布尔值的字段。

CommandField显示用来执行选择、编辑或删除操作的预定义命令按钮。

HyperLinkField将数据源中某个字段的值显示为超链接。此列字段类型使您可以将另一个字段绑定到超链接的 URL

ImageField GridView 控件中的每一项显示一个图像。   

TemplateField根据指定的模板为 GridView 控件中的每一项显示用户定义的内容。此列字段类型使您可以创建自定义的列字段。

详细介绍

在介绍之前,先介绍一下VS中如何添加列字段

在GridView控件上右击,选择“显示智能标记”会弹出一个窗口,选择编辑列则会弹出如上图所示窗口;

窗口中在可用字段下列出了所有的列字段,可按需求自行选择所需的列类型。

红色标记的出如果勾上则会自动添加默认的列。一般取消选择。

选中一个列字段,在后边的属性栏内可以编辑该列的属性

一般,需要绑定数据,则在数据对应的属性中进行设置。行为属性可以设置该列的一些表现方面的设置。具体的下面在介绍,一般都默认。(每个字段列所对应的属性可能有所不同的地方)

BoundField是GridView控件默认的列类型,用来显示文本用。

数据属性:

DataField:获取或设置数据字段的名称绑定到 BoundField 对象。该字段为数据源中对象的一个属性名。Peoname就是People对象的一个属性。

DataFormatString:获取或设置为字段的值的显示格式的字符串。用来对DataField进行字符串格式化用的。详细使用可以参考MSDN

       外观属性:

                     HeaderText:设置该列的标头文本。

              BoundField最常用的就这些属性。其它的默认即可,如需改动自行查阅,按照属性的字面意思应该可以理解。

       ButtonField:其实就是一个button单击按钮字段的按钮引发父数据绑定控件的命令事件.单击该button会触发GridViewRowCommand事件,如果想要使用该列字段,就得实现RowCommand事件。CommandArgument属性为RowCommand对象获取的行索引值。(这列类型其实没啥作用,只会执行RowCommand事件,没有自己的Button事件,我觉得就是作为当前行的一个事件按钮,做一些共通的行处理操作,比如更改表示颜色等等)

       数据属性:

DataTextField:BoundField的相似,绑定用来显示Button文本的数据源对象的属性名。

                    

       外观属性:

                    

这里说一下Text属性,该属性使用来设置Button文本的,如果DataTextFiedl没有绑定数据,则所有的行的该列的ButtonField的文本都相同,为Text所设置的值。

       CheckBoxField:就是一个复选框。用来绑定数据源的对象的一个bool类型的属性。如果非bool值绑定则绑定报错。

       CommandField:该列字段的用处比较多。用来执行选择、编辑或删除操作的预定义命令按钮。

行为属性:

      

其中,有四个show开头的属性,分别对应取消、删除、编辑、新建四种操作。该false改为true,则该列就会增加对应的功能。它们所对应的事件为GridViewRowCancelingEditRowDeletingRowEditingRowCommand(新建命令在GridView不无效,在DetailsView中有效);常用的就是编辑和删除个命令。

HyperLinkField:就是一个超链接button

       数据属性:

                     DataTextField:用于显示控件的文本。

                     DataNavigateUrlFields:用于设置连接的地址URL

       行为属性:

                     NavigateUrl:在没有设置DataNavigateUrlFields属性或绑定不成功的情况下,                    该属性为所有该列字段的共同的默认URL地址。

ImageField就一个图片控件。

       数据属性:

                     DataImageUrlField:用于设定控件的图片的URL地址的数据源对象的属性名。

                     DataAlternateTextField:为图片ALT属性的值。在不显示图片的时候显示该文字。

       TemplateField:自定义模版。可通过编辑模版,定义自己想要的列字段。前面所有的既存列字段只是常用的,那如果我想要有个DropdownList 控件的列字段怎么办,那就用TemplateField来自定义我们所需要的列类型。

       下面讲一下TemplateField的操作步骤:

       首先,我们在GridView里添加一个TemplateField列,然后右击,选择“显示智能标签”,然后选择编辑模版,会如下图所示;也可以直接右击,在快捷菜单里有个编辑模版,该模版列出了该GridView中所有的TemplateField列,按照索引值进行相应的模版列编辑即可。

 

如上图下拉菜单中显示的,里面有ItemTemplateAlternatingItemTemplate等等选项,它们是TemplateField的属性或叫对应的模块,可通过在对应的模块中定义自定义控件组合。下面一一介绍:

A. ItemTemplate:这是默认的模版,用来常态下的显示用的。在红色标记处可以拖放控件,如labletextboxdropdowlist等。也可以在代码编辑出手动添加

B. AlternatingItemTemplate:该模块用来间隔交叉显示的一种模版,比如要求单行显示Lable,双行显示textbox,就可用该模版来实现双行要实现的样式。这个不怎么常用。知道就行。

C.EditTemplate:这个是当该行处于编辑状态时, Template会显示这个模块,比如在常态下,我们在ItemTemplate中用一个lable来绑定显示数据,在EditTemplate中用一个textbox来绑定相同的数据,当点击CommandField的编辑按钮时,则,Template会显示textbox,使其处于可编辑状态,而lable则被隐藏了。

 

       好了以上是各个列字段的作用和实例,不知道某些树懒有么有看懂哈 ~^.^~。接下来,开始讲解GridView中的几个重要的常用事件:

首先看一下GridView中的事件一览吧:

下面从红色标记的事件开始讲起,其它的有时间自己看看,那些也不怎么常用。(有时间我会补充的)

1) PageIndexChanged

在单击某一页导航按钮时,但在 GridView 控件处理分页操作之后发生。

2) PageIndexChanging

在单击某一页导航按钮时,但在 GridView 控件处理分页操作之前发生。

以上两个事件从名字上都可以看出来,上面也详细解释了,下面举一个例子,以及使用的注意点:

首先,要实现分页功能,要将GridView中的AllowPaging属性设置为true,并修改PageSize的值,默认是10条,在绑定数据源的条数大于PageSize的时候才会出现分页;

PageIndexChanging事件里面,要将GridViewPageIndex值设置为e.NewPageIndex,也就是当前页的下一个也索引值,然后重新绑定数据源。这样就能实现分页效果了。

PageIndexChanging中是基于当前页面的操作,PageIndexChanged是重新绑定GridView后的操作。两者先后顺序不同,所以对GridView对象中的数据操作可能会有一个先后的影响。一般,changing中实现对当前页做一些check比如,当前页可能某一行真处于编辑状态,如果点击下一页则可能会丢失编辑中的数据,可以通过changing事件来检查,提醒用户做保存操作。changed一般是对重新绑定后的GridView做一些修改操作。具体情况等遇到实际项目中自己领会理解。

3) RowEditing

发生在单击某一行的“编辑”按钮以后,GridView 控件进入编辑模式之前。

该事件要结合行编辑功能,及CommandField的编辑按钮。

要实现CommandField的编辑功能,必须实现该事件,并在该事件中将GridViewEditIndex设置为e.NewEditIndex.即当前要编辑的行的索引值。然后重新绑定数据源。

 

4) RowUpdating

发生在单击某一行的“更新”按钮以后,GridView 控件对该行进行更新之前。

在该事件中可以获取编辑行的修改数据,然后进行相应的处理,比如更新到DB等。

5) RowUpdated

       发生在单击某一行的“更新”按钮,并且 GridView 控件对该行进行更新之后。

注意:经过代码分析,RowUpdated事件只有在GridViewSourceID属性有值时,并且,GridViewupdateEventArgs对象的Cancel属性不为False的时候才有效。

SourceId是绑定数据源控件时的控件ID,也就是说只有绑定数据源控件时(比如SqlDataSource等)才会进入Updated事件中去,如果采用手动绑定数据源(数据源为集合类对象)时,updated事件是无效的。

Cancel属性如果为False,则表示不更新数据,在RowUpdating事件中写到过,如果不想编辑的话,则讲e.Cancel属性设置为false

6) RowDeleting

在单击某一行的“删除”按钮时,但在 GridView 控件删除该行之前发生。

7) RowDeleted   

在单击某一行的“删除”按钮时,但在 GridView 控件删除该行之后发生。

这两个事件的使用和update相同,只不过一个是更新,一个是删除,Deleted事件和Updated事件注意点一样。

8) RowCommand

当单击 GridView 控件中的按钮时发生。

注意:只要是GridView中的按钮,点击后都会进去到该事件中,但有一点需要注意,如果不是RowCommandFieldButtonField中的按钮,是自定义模版中的按钮,则是先进入按钮本身的事件中,然后再进入RowCommand事件中;而RowCommandFieldButtonField的按钮则是先进入RowCommand事件,再进入各自的事件中去。其实也好记,RowCommandFieldButtonFieldGridView自带属性,而自定义模版中添加的按钮时外来按钮,这说明GridView有礼貌,先执行外来按钮的要求,再说说自己的要求,哈哈哈。

9)  Sorting

在单击用于列排序的超链接时,但在 GridView 控件对相应的排序操作进行处理之前发生。

10)  Sorted

       在单击用于列排序的超链接时,但在 GridView 控件对相应的排序操作进行处理之后发生。

       这两个事件是排序前后进行操作的事件,如果使用GridViewsort方法,其必须实现了这两个事件,否则报错。

 

好了,GridView的事件也到此结束。请多加练习,不然是不会领会这些的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值