您的位置:首页 > 编程语言 > ASP

ASP.NET之GridView常用方法总结

2015-08-14 01:22 447 查看
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会触发GridView的RowCommand事件,如果想要使用该列字段,就得实现RowCommand事件。CommandArgument属性为RowCommand对象获取的行索引值。(这列类型其实没啥作用,只会执行RowCommand事件,没有自己的Button事件,我觉得就是作为当前行的一个事件按钮,做一些共通的行处理操作,比如更改表示颜色等等)
数据属性:
DataTextField:和BoundField的相似,绑定用来显示Button文本的数据源对象的属性名。

外观属性:

这里说一下Text属性,该属性使用来设置Button文本的,如果DataTextFiedl没有绑定数据,则所有的行的该列的ButtonField的文本都相同,为Text所设置的值。
CheckBoxField:就是一个复选框。用来绑定数据源的对象的一个bool类型的属性。如果非bool值绑定则绑定报错。
CommandField:该列字段的用处比较多。用来执行选择、编辑或删除操作的预定义命令按钮。
行为属性:

其中,有四个show开头的属性,分别对应取消、删除、编辑、新建四种操作。该false改为true,则该列就会增加对应的功能。它们所对应的事件为GridView的RowCancelingEdit、RowDeleting、RowEditing、RowCommand(新建命令在GridView不无效,在DetailsView中有效);常用的就是编辑和删除个命令。
HyperLinkField:就是一个超链接button。
数据属性:
DataTextField:用于显示控件的文本。
DataNavigateUrlFields:用于设置连接的地址URL

行为属性:
NavigateUrl:在没有设置DataNavigateUrlFields属性或绑定不成功的情况下,
该属性为所有该列字段的共同的默认URL地址。
ImageField:就一个图片控件。
数据属性:
DataImageUrlField:用于设定控件的图片的URL地址的数据源对象的属性名。
DataAlternateTextField:为图片ALT属性的值。在不显示图片的时候显示该文字。
TemplateField:自定义模版。可通过编辑模版,定义自己想要的列字段。前面所有的既存列字段只是常用的,那如果我想要有个DropdownList
控件的列字段怎么办,那就用TemplateField来自定义我们所需要的列类型。
下面讲一下TemplateField的操作步骤:
首先,我们在GridView里添加一个TemplateField列,然后右击,选择“显示智能标签”,然后选择编辑模版,会如下图所示;也可以直接右击,在快捷菜单里有个编辑模版,该模版列出了该GridView中所有的TemplateField列,按照索引值进行相应的模版列编辑即可。

如上图下拉菜单中显示的,里面有ItemTemplate、AlternatingItemTemplate等等选项,它们是TemplateField的属性或叫对应的模块,可通过在对应的模块中定义自定义控件组合。下面一一介绍:
A. ItemTemplate:这是默认的模版,用来常态下的显示用的。在红色标记处可以拖放控件,如lable,textbox,dropdowlist等。也可以在代码编辑出手动添加

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事件里面,要将GridView的PageIndex值设置为e.NewPageIndex,也就是当前页的下一个也索引值,然后重新绑定数据源。这样就能实现分页效果了。
PageIndexChanging中是基于当前页面的操作,PageIndexChanged是重新绑定GridView后的操作。两者先后顺序不同,所以对GridView对象中的数据操作可能会有一个先后的影响。一般,changing中实现对当前页做一些check,比如,当前页可能某一行真处于编辑状态,如果点击下一页则可能会丢失编辑中的数据,可以通过changing事件来检查,提醒用户做保存操作。而changed一般是对重新绑定后的GridView做一些修改操作。具体情况等遇到实际项目中自己领会理解。
3) RowEditing
发生在单击某一行的“编辑”按钮以后,GridView
控件进入编辑模式之前。
该事件要结合行编辑功能,及CommandField的编辑按钮。
要实现CommandField的编辑功能,必须实现该事件,并在该事件中将GridView的EditIndex设置为e.NewEditIndex.即当前要编辑的行的索引值。然后重新绑定数据源。

4) RowUpdating
发生在单击某一行的“更新”按钮以后,GridView
控件对该行进行更新之前。
在该事件中可以获取编辑行的修改数据,然后进行相应的处理,比如更新到DB等。
5) RowUpdated
发生在单击某一行的“更新”按钮,并且 GridView
控件对该行进行更新之后。
注意:经过代码分析,RowUpdated事件只有在GridView的SourceID属性有值时,并且,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中的按钮,点击后都会进去到该事件中,但有一点需要注意,如果不是RowCommandField和ButtonField中的按钮,是自定义模版中的按钮,则是先进入按钮本身的事件中,然后再进入RowCommand事件中;而RowCommandField和ButtonField的按钮则是先进入RowCommand事件,再进入各自的事件中去。其实也好记,RowCommandField和ButtonField是GridView自带属性,而自定义模版中添加的按钮时外来按钮,这说明GridView有礼貌,先执行外来按钮的要求,再说说自己的要求,哈哈哈。
9) Sorting
在单击用于列排序的超链接时,但在 GridView
控件对相应的排序操作进行处理之前发生。
10) Sorted
在单击用于列排序的超链接时,但在 GridView
控件对相应的排序操作进行处理之后发生。
这两个事件是排序前后进行操作的事件,如果使用GridView的sort方法,其必须实现了这两个事件,否则报错。

好了,GridView的事件也到此结束。请多加练习,不然是不会领会这些的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: