第十八讲 利用 GridView控件显示数据教学目的:
一、掌握数据绑定的基本概念二、掌握 GridView控件的基本用法教学重点:
一、显示数据表记录二、对数据表进行分页、排序和选择三、利用模板美化显示四、显示记录中的图像一,GridView控件的常用属性
GridView控件的属性很多,总体上可以分为分页、
数据、行为、样式等几类。
1)分页:主要设置是否分页、分页标签的显示样式、页的大小等。
2)数据:设置控件的数据源。
3)行为:主要进行一些功能性的设置,如:是否排序、是否自动产生列、是否自动产生选择删除修改按钮等。
4)样式:设置 GridView控件的外观,包括选择行的样式、用于交替的行的样式、编辑行的样式、分页界面样式、脚注样式、标头样式等。
二,GridView控件的常用事件
GridView控件的事件非常丰富。当在 GridView控件上操作时就会产生相应的事件。要实现的功能代码就写在相应的事件中。 GridView控件的常用事件主要有:
1) PageIndexChanging:当前索引正在改变时触发。
2) RowCancelingEdit:当放弃修改数据时触发。
3) RowDeleting:当删除数据时触发。
4) RowEditing:当要编辑数据时触发。
5) RowUpdating:当保存修改的数据时触发。
6) SeletedIndexChanging:在选择新行时触发。
7) Sorting:当操作排序列进行排序时触发。
8) RowCreated:在创建行时触发。
三、数据绑定的基本概念
1、数据绑定就是将数据源中的数据显示到数据服务控件中。数据源可以是数据库表、
数组、集合等。数据服务控件是专门用于在页面上显示数据的一种控件。我们将主要介绍 GridView控件,DataList控件、
Repeater控件。
2、所有的数据绑定都通过 DataBind()函数来实现。 在实现数据绑定的时候,首先要指明数据源,然后再使用 DataBind()函数。
四,显示数据表记录
(3)在打开的对话框中选择 【 连接对象 】 。
选择的方法既可以在下拉列表中选择已经设置的连接对象 (因为连接对象可以在多个网页中共享 ),也可以单击 【 新建 】 按钮创建新的连接对象。图 7.4是创建一个新连接时的情况。
在图的上方小窗口中填入服务器名,中间的用户名中填写用户名 (使用 Windows身份验证时可不填 ),在下面的下拉列表中选择样板库
(Northwind)。 GridView控件的 DataSourceID属性是一个非常重要的属性,它指向使用的数据源控件。 当前面的设置完成以后,GridView控件的
DataSourceID的属性将自动指向 SqlDataSource1。
(4)在新打开的对话框中选择数据表以及表中的字段,然后单击 【 下一步 】 按钮。图 11.5中选择的是 Products数据表,并选择了其中的 5个字段。
★ 五、对数据表进行分页、排序和选择
2,排序
选择 【 启动排序 】 时,数据表各列的标题将自动转换为链接指针。 程序运行时,用鼠标单击某列的标题,整个表格内的数据都将以该列数据为依据从小到大地进行排列,如果想改变排序的方法,
例如从由小到大,改变为由大到小或者相反时,
只需再单击栏名即可完成排序方法的切换。
3,选择
选择 【 启用选定内容 】 项的目的是,当用鼠标选择某条记录时,该记录出现与其他记录不同的显示 (例如底色不同等 )。为了实现这一功能,除在这里选择复选框以外,还需给 GridView的
SelectedRowStyle属性做出相应的设置。
经过连接、分页、排序和选择的设置后,系统的部分代码如下:
<!--GridView控件的属性设置 -->
<asp:GridView ID="GridView1"
Runat="server"DataSourceID="SqlDataSource1"DataKeyNames="Pro
ductID"
AutoGenerateColumns="False" AllowPaging="True"
AllowSorting="True" PageSize="5">
<!--GridView中字段属性设置 -->
<Columns>
<asp:CommandField
ShowSelectButton="True"></asp:CommandField>
<asp:BoundField ReadOnly="True"
HeaderText="ProductID"
InsertVisible="False" DataField="ProductID"
SortExpression="ProductID">
</asp:BoundField>
<asp:BoundField HeaderText="ProductName"
DataField="ProductName"
SortExpression="ProductName">
</asp:BoundField>
<asp:BoundField HeaderText="CategoryID"
DataField="CategoryID"
SortExpression="CategoryID">
</asp:BoundField>
<asp:BoundField HeaderText="QuantityPerUnit"
DataField="QuantityPerUnit"
SortExpression="QuantityPerUnit">
</asp:BoundField>
<asp:BoundField HeaderText="UnitPrice"
DataField="UnitPrice"
SortExpression="UnitPrice">
</asp:BoundField>
</Columns>
</asp:GridView>
<!--数据源控件的设置 -->
<asp:SqlDataSource ID="SqlDataSource1" Runat="server"
SelectCommand="SELECT [ProductID],[ProductName],
[CategoryID],[QuantityPerUnit],
[UnitPrice] FROM [Products]"
ConnectionString="<%$ ConnectionStrings:AppConnectionString1
%>">
</asp:SqlDataSource>
六,利用模板美化显示
6.1 模板
6.2 自动套用格式
6.3 设置模板样式
6.1 模板
模板 (Template)是一组样板,它将 HTML元素与
ASP.NET的控件结合在一起用来定义数据的显示格式,
并且由这些格式形成最终的布局。模板相当于框架,
在框架中可以放入控件,通过控件与数据绑定,使得这些绑定的数据按照模板规定的格式显示。
通常将模板与样式表结合起来,以便全面改善界面的显示,增强控件的功能。
控件中的模板由头、尾、体三部分组成,分别用
“头模板 (HeaderTemplate)”,“尾模板
(FooterTemplate)” 和“体模板 (ItemTemplate)”
表示。 三部分的关系如图 7.8所示。
头模板
H e a d e rT e m p la te
体模板
Ite m T e m p la te
尾模板
Fo o te rT e m p la te
头体尾图 7.8 模板的结构
其中,头模板和尾模板用来设置数据标题和尾部显示的内容和格式。这两种模板是选用部分 (可用也可不采用 )。 体模板则是必须选用的,它用来显示数据的主体,当绑定有多条记录时,在体模板中将自动扫描数据源的各条记录,并且按照模板的要求逐条显示出来。 体模板有时又可细分为选择模板、编辑模板等,用来定义被选中记录或编辑记录的显示样式。还可以用交替模板来设置交替记录的不同的样式 (例如不同的底色 )。
控件通常具有固定的功能和显示界面。可是如果控件拥有模板功能,就能在不同的情况下自动转换成不同的界面并执行不同的任务,控件的功能从而得到了大大的加强,一个控件可以当多种控件来使用。
6.2 自动套用格式
这种方式设置起来最简单,但灵活性不够,功能也不够强。使用方法是:右击窗体页内 GridView
控件,在弹出的菜单中选择 【 自动套用格式 】 命令,将弹出如图 7.9 所示的对话框。
用鼠标单击左边 【 选择方案 】 中的各项,右边的
【 预览 】 窗口中将显示出该方案所对应的显示界面。逐个单击左边的方案,直到选择一个合适的方案为止。最后单击 【 确定 】 按钮,即完成了模板的设置工作。
6.3 设置模板样式
打开 GridView控件的 【 属性 】 窗口,可以看见 6
个模板样式的选项。
HeaderStyle:头模板样式。
ItemStyle:体模板样式。
FooterStyle:尾模板样式。
AlternatingItemStyle:交替模板样式。
SelectedItemStyle:选择项模板样式。
EditItemStyle:编辑项模板样式。
每种样式都包括:底色 (BackColor)、边界颜色
(BorderColor)、边界样式 (BorderStyle)、边界宽度
(BorderWidth)、其他样式 (CssClass)等,利用这些属性可以定义模板的显示特征。
程序运行时,前 4种模板的样式即可显示出来。而
SelectedItemStyle和 EditItemStyle两种模板只有当用鼠标选中某条记录或者对某条记录进行编辑时,才会显示出来。
例如将隔行样式 (AlternatingRowStyle)的背景设置成浅绿色时相应的代码如下:
<asp:GridView ID="GridView1" Runat="server"
DataSourceID="SqlDataSource1"
DataKeyNames="ProductID"
AutoGenerateColumns="False">
<AlternatingRowStyle
BackColor="#C0FFFF"></AlternatingRowStyle>
</asp:GridView>
七,显示记录中的图像
其中,
bh:代表编号。
xm:代表姓名。
xb:代表性别。
age:代表年龄。
phone:代表电话。
ImagePath:代表照片 (图像 )在网站中的路径。
(1) 将需要显示的图像复制到网站的某个目录之下。注意图像在网站中的路径必须与表格中的设置相符。目录示例如图 7.11所示。
(2) 在 GridView控件中去掉原有的 ImagePath字段,然后从字段属性窗口中增加 ImageField字段。
(3) 改变 ImageField字段的属性。属性的设置情况如图
7.12所示。
其中:
将 DataImageUrlField 属性与数据表字段 ImagePath 绑定。
在 AlternateText属性写上“暂缺照片”。当图像字段中缺图像时显示此字符串。
将本栏的标题 (HeaderText)改成“照片”。
(4) 运行时表格的显示如图 7.13所示。
图 7.12 数据表中显示照片的设置图 7.13 数据表的显示结果八、使用 GridView控件更新数据表
在网页中,能否允许对数据表进行编辑,
取决于以下几方面的条件。
(1) 是否允许访问包括数据表的网页。
(2) 数据库和表是否给操作者赋予了编辑的权限。
(3) 在被编辑的数据表中是否确定了关键字。
只有上述条件全部满足时,才能对数据表进行编辑。
修改 (更新 )数据表的具体步骤如下。
第 1步:网页中放入 GridView控件。通过数据源控件与数据库连接。
第 2步:当选择好数据表以及相关字段以后,单击 【 高级 】
按钮,界面如图 13.1所示。
这里提供了两个复选框。选中第一个复选框时,系统将自动产生增加 (Insert)、更新 (Update)和删除 (Delete)的
SQL语句;选择第二个复选框时,有助于防止由于同时对数据表进行更新和删除而并发的冲突。
第 3步:回到 GridView控件并打开数据源控件,在弹出的窗口中将看到 【 启用编辑 】 与 【 启用删除 】 等选项,如果选中这些复选框,系统将在 GridView控件中显示出相应的按钮 (如 【 编辑 】,【 删除 】 按钮等 )。界面的显示情况如图 7.2所示。
图 7.1 通过 【 高级 】 按钮设置 SQL编辑语句图 7.2 启用编辑和删除选择
现在进入 【 源 】 视图,就可以看到系统不仅已经生成了编辑数据表的 SQL语句,同时还生成了参数赋值的语句。代码如下:
<asp:SqlDataSource ID="SqlDataSource1" Runat="server"
DeleteCommand=
<!--删除命令 -->
"DELETE FROM [Products] WHERE [ProductID] = @original_ProductID
AND [ProductName] = @original_ProductName AND [CategoryID] =
@original_CategoryID AND [QuantityPerUnit] = @original_QuantityPerUnit
AND [UnitPrice] = @original_UnitPrice"
<!--增加命令 -->
InsertCommand="INSERT INTO [Products] ([ProductName],[CategoryID],
[QuantityPerUnit],[UnitPrice]) VALUES (@ProductName,@CategoryID,
@QuantityPerUnit,@UnitPrice)"
<!--显示命令 -->
SelectCommand="SELECT [ProductID],[ProductName],[CategoryID],
[QuantityPerUnit],[UnitPrice] FROM [Products]"
<!--更新命令 -->
UpdateCommand="UPDATE [Products] SET [ProductName] =
@ProductName,
[CategoryID] = @CategoryID,[QuantityPerUnit] = @QuantityPerUnit,
[UnitPrice] = @UnitPrice WHERE [ProductID] = @original_ProductID AND
[ProductName] = @original_ProductName AND [CategoryID] =
@original_CategoryID AND [QuantityPerUnit] = @original_QuantityPerUnit
AND [UnitPrice] = @original_UnitPrice"
ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>"
ConflictDetection="CompareAllValues">
<!--删除命令中的参数 -->
<DeleteParameters>
<asp:Parameter Type="Int32" Name="ProductID"></asp:Parameter>
<asp:Parameter Type="String" Name="ProductName"></asp:Parameter>
<asp:Parameter Type="Int32" Name="CategoryID"></asp:Parameter>
<asp:Parameter Type="String" Name="QuantityPerUnit"></asp:Parameter>
<asp:Parameter Type="Decimal" Name="UnitPrice"></asp:Parameter>
</DeleteParameters>
<!--更新命令中的参数 -->
<UpdateParameters>
<asp:Parameter Type="String" Name="ProductName"></asp:Parameter>
<asp:Parameter Type="Int32" Name="CategoryID"></asp:Parameter>
<asp:Parameter Type="String" Name="QuantityPerUnit"></asp:Parameter>
<asp:Parameter Type="Decimal" Name="UnitPrice"></asp:Parameter>
<asp:Parameter Type="Int32" Name="ProductID"></asp:Parameter>
</UpdateParameters>
<!--增加命令中的参数 -->
<InsertParameters>
<asp:Parameter Type="String" Name="ProductName"></asp:Parameter>
<asp:Parameter Type="Int32" Name="CategoryID"></asp:Parameter>
<asp:Parameter Type="String" Name="QuantityPerUnit"></asp:Parameter>
<asp:Parameter Type="Decimal" Name="UnitPrice"></asp:Parameter>
</InsertParameters>
</asp:SqlDataSource>
九、使用 GridView控件的列模板
9.1 选择显示的字段
9.2 增添按钮
9.3 使用模板列
GridView控件通过设置 AutoGenerateColumns属性为 true实现自动创建列,同时也可以通过模板列创建自己的列。 GridView控件中主要有如下几种类型的模板列。
1) BoundField:普通绑定列。
2) CheckBoxField:复选框绑定列。
3) HyperLinkField:超连接绑定列。
4) ImageField:图片绑定列。
5) ButtonField:按钮绑定列。
6) CommandField:命令绑定列。
7) TemplateField:自定义模板绑定列。
9.1使用 GridView控件的列模板
通过对 GridView控件中,列 (Columns)” 属性 的设置 (或者点击“编辑列” ),可以改变控件显示的格式,还可以增添新功能。例如,可以在 GridView控件中增加按钮;为字段的更新增加校验功能;显示各记录的图片等。下面将分别讲述这些功能的实现方法。
默认情况下 GridView控件总是按照数据源的结构显示数据。
例如,数据源中的数据表 (DataTable)中包含 4个字段,20
条记录。在 GridView的对象中也将显示同样的字段和记录,
而且表中的字段名与数据源的名字也相同。
选择显示的字段
若想改变列的显示格式时,可按以下方法进行。
(1)打开 GridView控件的 【 属性 】 窗口,单击
【 列 】 属性右边的省略号按钮,将弹出如图 13.5
所示的对话框。
(2)取消对 【 自动生成字段 】 复选框的选择。如果不取消这个选择,当按照下面的方法增加新字段时,GridView控件中将会出现重复的字段。
(3)然后在 【 所选字段 】 窗口中逐个选择字段,
并在右边 【 行为 】 窗口中分别将列标题
(HeaderText)改用中文标题。
选择显示的字段图 7.5 设置 GridView的列属性增添按钮
展开 【 可用字段 】 窗口中的 CommandField,
下面显示 【 编辑、更新、取消 】,【 选择 】,【 删除 】 几组按钮。根据需要可以将这些按钮添加到下面的 【 所选字段 】 窗口中。图 7.6就是将 【 编辑、更新、取消 】
按钮增加进来后的情况。
单击这个新增加的按钮,然后在右上方的窗口中设置属性。例如填写栏名
(HeaderText),将英文显示改用汉字。
使用模板列图 7.6 增添按钮使用模板列
当将某列转换成模板列时,就意味着可以为该列设置多种不同的状态 (例如被选择状态、编辑状态等 ),并为不同的状态增添控件和方法。
转换的方法是,在图 7.6所示的对话框中 先选择某一列名,
然后单击对话框右下角的 【 将此字段转换为
TemplateField】,即可将该列转换成模板列,然后在模板列的不同状态中增加控件和方法。
下面利用一张雇员表 (gyb)来说明设置方法,表格的结构与内容如图 7.7所示。
1.准备工作
(1)在窗体页中放入 GridView控件,建立与数据库的连接,
通过 Columns属性设置模板,方法与前面相同,结果如图
7.8所示。
使用模板列图 7.7 雇员表使用模板列
2.为姓名字段设置模板
(1)先单击 【 Column[1]-姓名 】,将弹出如图
13.10所示的对话框。
(2)选择 【 模板编辑模式 】 栏中输入框右方窗口中的 【 编辑 DataBindings】,在弹出的窗口中将
,Text” 属性绑定在,xm” 字段上。
(3)另外在输入框旁增加一 RequiredValidator控件,并设置相应参数,以便对字段进行编辑时检查输入的数据。
(4)选择 【 简单绑定 】 项,将控件的 Text与 xm字段绑定,数据绑定的语句如下:
Text='<%# Bind("xm") %>'
在 EditItemTemplate模板中放入 TextBox及
RequireValidator控件,将校验对象指向
TextBox,并且按照要求改写出现错误时的提示信息。
此时在 【 源 】 视图中可以看到模板的代码如下:
<asp:TemplateField SortExpression="xm"
HeaderText="姓名 ">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" Runat="server"
Text='<%# Bind("xm") %>' Width="90px">
</asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator1"
Runat="server"
ErrorMessage="姓名不能空 ">
</asp:RequiredFieldValidator>
</EditItemTemplate>
使用模板列图 13.10 编辑“姓名”模板使用模板列图 7.11 给姓名的输入增添校验功能
3.为性别字段设置模板
(1) 单击 【 Column[2]-性别 】 。
(2) 在 ItemTemplate模板中放入 Label控件,右击该控件后,选择 【 属性 】 命令,然后将其 ID属性取名为 Label2。
(3) 在 EditItemTemplate模板中放入 RadioButtonList控件,将其 Checked属性与,xb”字段绑定。并将它的 RepeatDirection属性设置成 Horizontal,以便使按钮成横向 排列。
(4) 将 RadioButtonList控件的 SelectedValue的属性绑定到,xb”字段上。情况如 图
13.12所示。
此时在 【 源 】 视图中模板的代码如下:
<asp:TemplateField SortExpression="xb"
HeaderText="性别 ">
<EditItemTemplate>
<asp:RadioButtonList ID="RadioButtonList1"
Runat="server"
RepeatDirection="Horizontal"
SelectedValue='<%# Bind("xb") %>'>
<asp:ListItem>男 </asp:ListItem>
<asp:ListItem>女 </asp:ListItem>
</asp:RadioButtonList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# Bind("xb") %>' ID="Label2"></asp:Label>
</ItemTemplate>
使用模板列图 7.12 编辑性别模板
<asp:TemplateField SortExpression="age" HeaderText="年龄 ">
<EditItemTemplate>
<asp:TextBox Runat="server" Text='<%# Bind("age") %>' ID="TextBox3" Width="60px"></asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" Runat="server"
ErrorMessage="年龄需在 18岁到 65岁之间 "
ControlToValidate="TextBox3" MaximumValue="65" MinimumValue="18" Type="Integer">
</asp:RangeValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# Bind("age") %>' ID="Label3"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
5.为照片字段设置模板
这里介绍的是另一种显示图像的方法,即通过模板显示图像的方法。具体步骤如下。
(1) 单击 【 Column[4]-照片 】 。
(2) 在 ItemTemplate模板中放入 Image控件,右击该控件后,选择 【 属性 】 命令,然后将其 AlternateText属性设置为“没有提供图片”。
(3) 按照前面讲述的方法实施数据绑定,将 ImageUrl属性与 ImagePath字段绑定,如图 13.14所示。此时将出现以下数据绑定的语句:
ImageUrl='<%# Bind("ImagePath") %>'
此时在 【 源 】 视图中模板的代码如下:
<asp:TemplateField SortExpression="ImagePath" HeaderText="照片 ">
<EditItemTemplate>
<asp:TextBox Runat="server" Text='<%# Bind("ImagePath") %>' ID="TextBox4">
</asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Image ID="Image1" Runat="server" ImageUrl='<%# Bind("ImagePath") %>' />
</ItemTemplate>
</asp:TemplateField>
使用模板列图 7.14 编辑照片模板使用模板列十、在 GridView控件中增添记录
如前所述,在配置 GridView控件的数据源控件时选择 【 高级 】 按钮就会自动生成,Insert”,,UpDate” 和,Delete” 的 SQL编辑语句,
并且给出各种参数类型的语句。其中有关,Insert” 的 SQL语句如下:
InsertCommand="INSERT INTO [gyb] ([xm],[xb],[age],[phone],
[ImagePath])
VALUES (@xm,@xb,@age,@phone,@ImagePath)"
相应的参数类型语句如下:
<InsertParameters>
<asp:Parameter Type="String" Name="xm"></asp:Parameter>
<asp:Parameter Type="String" Name="xb"></asp:Parameter>
<asp:Parameter Type="Int32" Name="age"></asp:Parameter>
<asp:Parameter Type="String"
Name="phone"></asp:Parameter>
<asp:Parameter Type="String"
Name="ImagePath"></asp:Parameter>
</InsertParameters>
如果需要在数据表中增添新记录,则需要在前面步骤的基础上,再补充以下步骤:
(1) 在窗体中增添几个输入框 (例如增加了 5个 TextBox)。
(2) 在 GridView控件中增添一按钮,并将该按钮的
CommandName属性 命名为 insert。
(3) 用鼠标双击 RowCommand事件,书写代码给待定参数赋值。代码如下:
void GridView1_RowCommand(object sender,GridViewCommandEventArgs
e)
{
if (e.CommandName == "insert")
{
SqlDataSource1.InsertParameters.Clear();
SqlDataSource1.InsertParameters.Add("xm",TextBox1.Text);
SqlDataSource1.InsertParameters.Add("xb",
TextBox2.Text);
SqlDataSource1.InsertParameters.Add("age",
TextBox3.Text);
SqlDataSource1.InsertParameters.Add("phone",
TextBox4.Text);
SqlDataSource1.InsertParameters.Add("ImagePath",
TextBox5.Text);
SqlDataSource1.Insert();
}
}
这里的语句中参数都采用 string类型。即:
SqlDataSource1.InsertParameters.Add(string,string);
4)数据操作功能 —— 包括选定、删除、修改
1.数据行的选定创建一个“选定”列,在 SelectedIndexChanging事件中添加如下代码,可以选定一行。
GridView1.SelectedIndex = e.NewSelectedIndex;
GridView1.DataBind();
2.数据的删除创建一个删除列,在 RowDeleting事件中添加如下代码,
可以删除一列。
string XueHao=gv.Rows[e.RowIndex].Cells[0].Text;
SqlCommand delCmd = new SqlCommand("delete student where
XueHao='" + XueHao + "'",con);
delCmd.ExecuteNonQuery();
gvDataBind(); //实现数据绑定的函数十一、用代码实现 GridView的选定、删除、修改等操作
3.数据的修改创建一个“编辑、更新、取消”列,在
RowEditing事件中添加如下代码,将一行变成编辑状态。
gv.EditIndex = e.NewEditIndex;
gvDataBind();//实现数据绑定函数在 RowCancelingEdit事件中添加如下代码,将一行取消编辑。
gv.EditIndex = -1;
gvDataBind();//实现数据绑定函数在 RowUpdating事件中添加如下代码,实现数据的更新和保存。
updateCmd = new SqlCommand("update student set
XingMing=@XingMing where XueHao=@XueHao",con);
SqlParameter prmUpdateXueHao = new
SqlParameter("@XueHao",SqlDbType.VarChar,5,"XueHao");
updateCmd.Parameters.Add(prmUpdateXueHao);
SqlParameter prmUpdateXingMing = new
SqlParameter("@XingMing",SqlDbType.VarChar,10,
"XingMing");
updateCmd.Parameters.Add(prmUpdateXingMing);
prmUpdateXueHao.Direction=ParameterDirection.Input;
prmUpdateXueHao.Value =
gv.Rows[e.RowIndex].Cells[0].Text;
prmUpdateXingMing.Direction = ParameterDirection.Input;
prmUpdateXingMing.Value =
((TextBox)gv.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
updateCmd.ExecuteNonQuery();
gv.EditIndex = -1;
gvDataBind();
GridView控件应用举例
1)使用 Command,DataReader和 DataSet两种方法实现数据绑定。
方法 1:使用 Command和 DataReader
string sqlStr = "select * from Student";
sqlCmd = new SqlCommand(sqlStr,con);
reader = sqlCmd.ExecuteReader();
gv.DataSource = reader;
gv.DataBind();
方法 2:使用 DataSet数据集
SqlDataAdapter sqlDa;
string sqlStr = "select * from Student";
sqlCmd = new SqlCommand(sqlStr,con);
ds = new DataSet();
sqlDa = new SqlDataAdapter();
sqlDa.SelectCommand = sqlCmd;
sqlDa.Fill(ds,"student");
//return ds.Tables[“student”].DefaultView;
gv.DataSource = ds.Tables["student"].DefaultView;
gv.DataBind();
2)实现分页显示功能步骤:
1.设置 AllowPaging为 true;
2.在 PagIndexChanging事件中添加如下代码:
gv.PageIndex = e.NewPageIndex;
gv.DataSource=getView();
gv.DataBind();
其中 getView()函数用于得到一个数据源。
3)实现排序功能步骤:
1)设置 AllowSorting为 true;
2)在 Sorting事件中添加如下代码:
DataView dv;
dv=getView();
dv.Sort = e.SortExpression;
gv.DataSource =dv;
gv.DataBind();
其中 getView()函数用于得到一个数据源。同前面功能相同。
一、掌握数据绑定的基本概念二、掌握 GridView控件的基本用法教学重点:
一、显示数据表记录二、对数据表进行分页、排序和选择三、利用模板美化显示四、显示记录中的图像一,GridView控件的常用属性
GridView控件的属性很多,总体上可以分为分页、
数据、行为、样式等几类。
1)分页:主要设置是否分页、分页标签的显示样式、页的大小等。
2)数据:设置控件的数据源。
3)行为:主要进行一些功能性的设置,如:是否排序、是否自动产生列、是否自动产生选择删除修改按钮等。
4)样式:设置 GridView控件的外观,包括选择行的样式、用于交替的行的样式、编辑行的样式、分页界面样式、脚注样式、标头样式等。
二,GridView控件的常用事件
GridView控件的事件非常丰富。当在 GridView控件上操作时就会产生相应的事件。要实现的功能代码就写在相应的事件中。 GridView控件的常用事件主要有:
1) PageIndexChanging:当前索引正在改变时触发。
2) RowCancelingEdit:当放弃修改数据时触发。
3) RowDeleting:当删除数据时触发。
4) RowEditing:当要编辑数据时触发。
5) RowUpdating:当保存修改的数据时触发。
6) SeletedIndexChanging:在选择新行时触发。
7) Sorting:当操作排序列进行排序时触发。
8) RowCreated:在创建行时触发。
三、数据绑定的基本概念
1、数据绑定就是将数据源中的数据显示到数据服务控件中。数据源可以是数据库表、
数组、集合等。数据服务控件是专门用于在页面上显示数据的一种控件。我们将主要介绍 GridView控件,DataList控件、
Repeater控件。
2、所有的数据绑定都通过 DataBind()函数来实现。 在实现数据绑定的时候,首先要指明数据源,然后再使用 DataBind()函数。
四,显示数据表记录
(3)在打开的对话框中选择 【 连接对象 】 。
选择的方法既可以在下拉列表中选择已经设置的连接对象 (因为连接对象可以在多个网页中共享 ),也可以单击 【 新建 】 按钮创建新的连接对象。图 7.4是创建一个新连接时的情况。
在图的上方小窗口中填入服务器名,中间的用户名中填写用户名 (使用 Windows身份验证时可不填 ),在下面的下拉列表中选择样板库
(Northwind)。 GridView控件的 DataSourceID属性是一个非常重要的属性,它指向使用的数据源控件。 当前面的设置完成以后,GridView控件的
DataSourceID的属性将自动指向 SqlDataSource1。
(4)在新打开的对话框中选择数据表以及表中的字段,然后单击 【 下一步 】 按钮。图 11.5中选择的是 Products数据表,并选择了其中的 5个字段。
★ 五、对数据表进行分页、排序和选择
2,排序
选择 【 启动排序 】 时,数据表各列的标题将自动转换为链接指针。 程序运行时,用鼠标单击某列的标题,整个表格内的数据都将以该列数据为依据从小到大地进行排列,如果想改变排序的方法,
例如从由小到大,改变为由大到小或者相反时,
只需再单击栏名即可完成排序方法的切换。
3,选择
选择 【 启用选定内容 】 项的目的是,当用鼠标选择某条记录时,该记录出现与其他记录不同的显示 (例如底色不同等 )。为了实现这一功能,除在这里选择复选框以外,还需给 GridView的
SelectedRowStyle属性做出相应的设置。
经过连接、分页、排序和选择的设置后,系统的部分代码如下:
<!--GridView控件的属性设置 -->
<asp:GridView ID="GridView1"
Runat="server"DataSourceID="SqlDataSource1"DataKeyNames="Pro
ductID"
AutoGenerateColumns="False" AllowPaging="True"
AllowSorting="True" PageSize="5">
<!--GridView中字段属性设置 -->
<Columns>
<asp:CommandField
ShowSelectButton="True"></asp:CommandField>
<asp:BoundField ReadOnly="True"
HeaderText="ProductID"
InsertVisible="False" DataField="ProductID"
SortExpression="ProductID">
</asp:BoundField>
<asp:BoundField HeaderText="ProductName"
DataField="ProductName"
SortExpression="ProductName">
</asp:BoundField>
<asp:BoundField HeaderText="CategoryID"
DataField="CategoryID"
SortExpression="CategoryID">
</asp:BoundField>
<asp:BoundField HeaderText="QuantityPerUnit"
DataField="QuantityPerUnit"
SortExpression="QuantityPerUnit">
</asp:BoundField>
<asp:BoundField HeaderText="UnitPrice"
DataField="UnitPrice"
SortExpression="UnitPrice">
</asp:BoundField>
</Columns>
</asp:GridView>
<!--数据源控件的设置 -->
<asp:SqlDataSource ID="SqlDataSource1" Runat="server"
SelectCommand="SELECT [ProductID],[ProductName],
[CategoryID],[QuantityPerUnit],
[UnitPrice] FROM [Products]"
ConnectionString="<%$ ConnectionStrings:AppConnectionString1
%>">
</asp:SqlDataSource>
六,利用模板美化显示
6.1 模板
6.2 自动套用格式
6.3 设置模板样式
6.1 模板
模板 (Template)是一组样板,它将 HTML元素与
ASP.NET的控件结合在一起用来定义数据的显示格式,
并且由这些格式形成最终的布局。模板相当于框架,
在框架中可以放入控件,通过控件与数据绑定,使得这些绑定的数据按照模板规定的格式显示。
通常将模板与样式表结合起来,以便全面改善界面的显示,增强控件的功能。
控件中的模板由头、尾、体三部分组成,分别用
“头模板 (HeaderTemplate)”,“尾模板
(FooterTemplate)” 和“体模板 (ItemTemplate)”
表示。 三部分的关系如图 7.8所示。
头模板
H e a d e rT e m p la te
体模板
Ite m T e m p la te
尾模板
Fo o te rT e m p la te
头体尾图 7.8 模板的结构
其中,头模板和尾模板用来设置数据标题和尾部显示的内容和格式。这两种模板是选用部分 (可用也可不采用 )。 体模板则是必须选用的,它用来显示数据的主体,当绑定有多条记录时,在体模板中将自动扫描数据源的各条记录,并且按照模板的要求逐条显示出来。 体模板有时又可细分为选择模板、编辑模板等,用来定义被选中记录或编辑记录的显示样式。还可以用交替模板来设置交替记录的不同的样式 (例如不同的底色 )。
控件通常具有固定的功能和显示界面。可是如果控件拥有模板功能,就能在不同的情况下自动转换成不同的界面并执行不同的任务,控件的功能从而得到了大大的加强,一个控件可以当多种控件来使用。
6.2 自动套用格式
这种方式设置起来最简单,但灵活性不够,功能也不够强。使用方法是:右击窗体页内 GridView
控件,在弹出的菜单中选择 【 自动套用格式 】 命令,将弹出如图 7.9 所示的对话框。
用鼠标单击左边 【 选择方案 】 中的各项,右边的
【 预览 】 窗口中将显示出该方案所对应的显示界面。逐个单击左边的方案,直到选择一个合适的方案为止。最后单击 【 确定 】 按钮,即完成了模板的设置工作。
6.3 设置模板样式
打开 GridView控件的 【 属性 】 窗口,可以看见 6
个模板样式的选项。
HeaderStyle:头模板样式。
ItemStyle:体模板样式。
FooterStyle:尾模板样式。
AlternatingItemStyle:交替模板样式。
SelectedItemStyle:选择项模板样式。
EditItemStyle:编辑项模板样式。
每种样式都包括:底色 (BackColor)、边界颜色
(BorderColor)、边界样式 (BorderStyle)、边界宽度
(BorderWidth)、其他样式 (CssClass)等,利用这些属性可以定义模板的显示特征。
程序运行时,前 4种模板的样式即可显示出来。而
SelectedItemStyle和 EditItemStyle两种模板只有当用鼠标选中某条记录或者对某条记录进行编辑时,才会显示出来。
例如将隔行样式 (AlternatingRowStyle)的背景设置成浅绿色时相应的代码如下:
<asp:GridView ID="GridView1" Runat="server"
DataSourceID="SqlDataSource1"
DataKeyNames="ProductID"
AutoGenerateColumns="False">
<AlternatingRowStyle
BackColor="#C0FFFF"></AlternatingRowStyle>
</asp:GridView>
七,显示记录中的图像
其中,
bh:代表编号。
xm:代表姓名。
xb:代表性别。
age:代表年龄。
phone:代表电话。
ImagePath:代表照片 (图像 )在网站中的路径。
(1) 将需要显示的图像复制到网站的某个目录之下。注意图像在网站中的路径必须与表格中的设置相符。目录示例如图 7.11所示。
(2) 在 GridView控件中去掉原有的 ImagePath字段,然后从字段属性窗口中增加 ImageField字段。
(3) 改变 ImageField字段的属性。属性的设置情况如图
7.12所示。
其中:
将 DataImageUrlField 属性与数据表字段 ImagePath 绑定。
在 AlternateText属性写上“暂缺照片”。当图像字段中缺图像时显示此字符串。
将本栏的标题 (HeaderText)改成“照片”。
(4) 运行时表格的显示如图 7.13所示。
图 7.12 数据表中显示照片的设置图 7.13 数据表的显示结果八、使用 GridView控件更新数据表
在网页中,能否允许对数据表进行编辑,
取决于以下几方面的条件。
(1) 是否允许访问包括数据表的网页。
(2) 数据库和表是否给操作者赋予了编辑的权限。
(3) 在被编辑的数据表中是否确定了关键字。
只有上述条件全部满足时,才能对数据表进行编辑。
修改 (更新 )数据表的具体步骤如下。
第 1步:网页中放入 GridView控件。通过数据源控件与数据库连接。
第 2步:当选择好数据表以及相关字段以后,单击 【 高级 】
按钮,界面如图 13.1所示。
这里提供了两个复选框。选中第一个复选框时,系统将自动产生增加 (Insert)、更新 (Update)和删除 (Delete)的
SQL语句;选择第二个复选框时,有助于防止由于同时对数据表进行更新和删除而并发的冲突。
第 3步:回到 GridView控件并打开数据源控件,在弹出的窗口中将看到 【 启用编辑 】 与 【 启用删除 】 等选项,如果选中这些复选框,系统将在 GridView控件中显示出相应的按钮 (如 【 编辑 】,【 删除 】 按钮等 )。界面的显示情况如图 7.2所示。
图 7.1 通过 【 高级 】 按钮设置 SQL编辑语句图 7.2 启用编辑和删除选择
现在进入 【 源 】 视图,就可以看到系统不仅已经生成了编辑数据表的 SQL语句,同时还生成了参数赋值的语句。代码如下:
<asp:SqlDataSource ID="SqlDataSource1" Runat="server"
DeleteCommand=
<!--删除命令 -->
"DELETE FROM [Products] WHERE [ProductID] = @original_ProductID
AND [ProductName] = @original_ProductName AND [CategoryID] =
@original_CategoryID AND [QuantityPerUnit] = @original_QuantityPerUnit
AND [UnitPrice] = @original_UnitPrice"
<!--增加命令 -->
InsertCommand="INSERT INTO [Products] ([ProductName],[CategoryID],
[QuantityPerUnit],[UnitPrice]) VALUES (@ProductName,@CategoryID,
@QuantityPerUnit,@UnitPrice)"
<!--显示命令 -->
SelectCommand="SELECT [ProductID],[ProductName],[CategoryID],
[QuantityPerUnit],[UnitPrice] FROM [Products]"
<!--更新命令 -->
UpdateCommand="UPDATE [Products] SET [ProductName] =
@ProductName,
[CategoryID] = @CategoryID,[QuantityPerUnit] = @QuantityPerUnit,
[UnitPrice] = @UnitPrice WHERE [ProductID] = @original_ProductID AND
[ProductName] = @original_ProductName AND [CategoryID] =
@original_CategoryID AND [QuantityPerUnit] = @original_QuantityPerUnit
AND [UnitPrice] = @original_UnitPrice"
ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>"
ConflictDetection="CompareAllValues">
<!--删除命令中的参数 -->
<DeleteParameters>
<asp:Parameter Type="Int32" Name="ProductID"></asp:Parameter>
<asp:Parameter Type="String" Name="ProductName"></asp:Parameter>
<asp:Parameter Type="Int32" Name="CategoryID"></asp:Parameter>
<asp:Parameter Type="String" Name="QuantityPerUnit"></asp:Parameter>
<asp:Parameter Type="Decimal" Name="UnitPrice"></asp:Parameter>
</DeleteParameters>
<!--更新命令中的参数 -->
<UpdateParameters>
<asp:Parameter Type="String" Name="ProductName"></asp:Parameter>
<asp:Parameter Type="Int32" Name="CategoryID"></asp:Parameter>
<asp:Parameter Type="String" Name="QuantityPerUnit"></asp:Parameter>
<asp:Parameter Type="Decimal" Name="UnitPrice"></asp:Parameter>
<asp:Parameter Type="Int32" Name="ProductID"></asp:Parameter>
</UpdateParameters>
<!--增加命令中的参数 -->
<InsertParameters>
<asp:Parameter Type="String" Name="ProductName"></asp:Parameter>
<asp:Parameter Type="Int32" Name="CategoryID"></asp:Parameter>
<asp:Parameter Type="String" Name="QuantityPerUnit"></asp:Parameter>
<asp:Parameter Type="Decimal" Name="UnitPrice"></asp:Parameter>
</InsertParameters>
</asp:SqlDataSource>
九、使用 GridView控件的列模板
9.1 选择显示的字段
9.2 增添按钮
9.3 使用模板列
GridView控件通过设置 AutoGenerateColumns属性为 true实现自动创建列,同时也可以通过模板列创建自己的列。 GridView控件中主要有如下几种类型的模板列。
1) BoundField:普通绑定列。
2) CheckBoxField:复选框绑定列。
3) HyperLinkField:超连接绑定列。
4) ImageField:图片绑定列。
5) ButtonField:按钮绑定列。
6) CommandField:命令绑定列。
7) TemplateField:自定义模板绑定列。
9.1使用 GridView控件的列模板
通过对 GridView控件中,列 (Columns)” 属性 的设置 (或者点击“编辑列” ),可以改变控件显示的格式,还可以增添新功能。例如,可以在 GridView控件中增加按钮;为字段的更新增加校验功能;显示各记录的图片等。下面将分别讲述这些功能的实现方法。
默认情况下 GridView控件总是按照数据源的结构显示数据。
例如,数据源中的数据表 (DataTable)中包含 4个字段,20
条记录。在 GridView的对象中也将显示同样的字段和记录,
而且表中的字段名与数据源的名字也相同。
选择显示的字段
若想改变列的显示格式时,可按以下方法进行。
(1)打开 GridView控件的 【 属性 】 窗口,单击
【 列 】 属性右边的省略号按钮,将弹出如图 13.5
所示的对话框。
(2)取消对 【 自动生成字段 】 复选框的选择。如果不取消这个选择,当按照下面的方法增加新字段时,GridView控件中将会出现重复的字段。
(3)然后在 【 所选字段 】 窗口中逐个选择字段,
并在右边 【 行为 】 窗口中分别将列标题
(HeaderText)改用中文标题。
选择显示的字段图 7.5 设置 GridView的列属性增添按钮
展开 【 可用字段 】 窗口中的 CommandField,
下面显示 【 编辑、更新、取消 】,【 选择 】,【 删除 】 几组按钮。根据需要可以将这些按钮添加到下面的 【 所选字段 】 窗口中。图 7.6就是将 【 编辑、更新、取消 】
按钮增加进来后的情况。
单击这个新增加的按钮,然后在右上方的窗口中设置属性。例如填写栏名
(HeaderText),将英文显示改用汉字。
使用模板列图 7.6 增添按钮使用模板列
当将某列转换成模板列时,就意味着可以为该列设置多种不同的状态 (例如被选择状态、编辑状态等 ),并为不同的状态增添控件和方法。
转换的方法是,在图 7.6所示的对话框中 先选择某一列名,
然后单击对话框右下角的 【 将此字段转换为
TemplateField】,即可将该列转换成模板列,然后在模板列的不同状态中增加控件和方法。
下面利用一张雇员表 (gyb)来说明设置方法,表格的结构与内容如图 7.7所示。
1.准备工作
(1)在窗体页中放入 GridView控件,建立与数据库的连接,
通过 Columns属性设置模板,方法与前面相同,结果如图
7.8所示。
使用模板列图 7.7 雇员表使用模板列
2.为姓名字段设置模板
(1)先单击 【 Column[1]-姓名 】,将弹出如图
13.10所示的对话框。
(2)选择 【 模板编辑模式 】 栏中输入框右方窗口中的 【 编辑 DataBindings】,在弹出的窗口中将
,Text” 属性绑定在,xm” 字段上。
(3)另外在输入框旁增加一 RequiredValidator控件,并设置相应参数,以便对字段进行编辑时检查输入的数据。
(4)选择 【 简单绑定 】 项,将控件的 Text与 xm字段绑定,数据绑定的语句如下:
Text='<%# Bind("xm") %>'
在 EditItemTemplate模板中放入 TextBox及
RequireValidator控件,将校验对象指向
TextBox,并且按照要求改写出现错误时的提示信息。
此时在 【 源 】 视图中可以看到模板的代码如下:
<asp:TemplateField SortExpression="xm"
HeaderText="姓名 ">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" Runat="server"
Text='<%# Bind("xm") %>' Width="90px">
</asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator1"
Runat="server"
ErrorMessage="姓名不能空 ">
</asp:RequiredFieldValidator>
</EditItemTemplate>
使用模板列图 13.10 编辑“姓名”模板使用模板列图 7.11 给姓名的输入增添校验功能
3.为性别字段设置模板
(1) 单击 【 Column[2]-性别 】 。
(2) 在 ItemTemplate模板中放入 Label控件,右击该控件后,选择 【 属性 】 命令,然后将其 ID属性取名为 Label2。
(3) 在 EditItemTemplate模板中放入 RadioButtonList控件,将其 Checked属性与,xb”字段绑定。并将它的 RepeatDirection属性设置成 Horizontal,以便使按钮成横向 排列。
(4) 将 RadioButtonList控件的 SelectedValue的属性绑定到,xb”字段上。情况如 图
13.12所示。
此时在 【 源 】 视图中模板的代码如下:
<asp:TemplateField SortExpression="xb"
HeaderText="性别 ">
<EditItemTemplate>
<asp:RadioButtonList ID="RadioButtonList1"
Runat="server"
RepeatDirection="Horizontal"
SelectedValue='<%# Bind("xb") %>'>
<asp:ListItem>男 </asp:ListItem>
<asp:ListItem>女 </asp:ListItem>
</asp:RadioButtonList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# Bind("xb") %>' ID="Label2"></asp:Label>
</ItemTemplate>
使用模板列图 7.12 编辑性别模板
<asp:TemplateField SortExpression="age" HeaderText="年龄 ">
<EditItemTemplate>
<asp:TextBox Runat="server" Text='<%# Bind("age") %>' ID="TextBox3" Width="60px"></asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" Runat="server"
ErrorMessage="年龄需在 18岁到 65岁之间 "
ControlToValidate="TextBox3" MaximumValue="65" MinimumValue="18" Type="Integer">
</asp:RangeValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label Runat="server" Text='<%# Bind("age") %>' ID="Label3"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
5.为照片字段设置模板
这里介绍的是另一种显示图像的方法,即通过模板显示图像的方法。具体步骤如下。
(1) 单击 【 Column[4]-照片 】 。
(2) 在 ItemTemplate模板中放入 Image控件,右击该控件后,选择 【 属性 】 命令,然后将其 AlternateText属性设置为“没有提供图片”。
(3) 按照前面讲述的方法实施数据绑定,将 ImageUrl属性与 ImagePath字段绑定,如图 13.14所示。此时将出现以下数据绑定的语句:
ImageUrl='<%# Bind("ImagePath") %>'
此时在 【 源 】 视图中模板的代码如下:
<asp:TemplateField SortExpression="ImagePath" HeaderText="照片 ">
<EditItemTemplate>
<asp:TextBox Runat="server" Text='<%# Bind("ImagePath") %>' ID="TextBox4">
</asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Image ID="Image1" Runat="server" ImageUrl='<%# Bind("ImagePath") %>' />
</ItemTemplate>
</asp:TemplateField>
使用模板列图 7.14 编辑照片模板使用模板列十、在 GridView控件中增添记录
如前所述,在配置 GridView控件的数据源控件时选择 【 高级 】 按钮就会自动生成,Insert”,,UpDate” 和,Delete” 的 SQL编辑语句,
并且给出各种参数类型的语句。其中有关,Insert” 的 SQL语句如下:
InsertCommand="INSERT INTO [gyb] ([xm],[xb],[age],[phone],
[ImagePath])
VALUES (@xm,@xb,@age,@phone,@ImagePath)"
相应的参数类型语句如下:
<InsertParameters>
<asp:Parameter Type="String" Name="xm"></asp:Parameter>
<asp:Parameter Type="String" Name="xb"></asp:Parameter>
<asp:Parameter Type="Int32" Name="age"></asp:Parameter>
<asp:Parameter Type="String"
Name="phone"></asp:Parameter>
<asp:Parameter Type="String"
Name="ImagePath"></asp:Parameter>
</InsertParameters>
如果需要在数据表中增添新记录,则需要在前面步骤的基础上,再补充以下步骤:
(1) 在窗体中增添几个输入框 (例如增加了 5个 TextBox)。
(2) 在 GridView控件中增添一按钮,并将该按钮的
CommandName属性 命名为 insert。
(3) 用鼠标双击 RowCommand事件,书写代码给待定参数赋值。代码如下:
void GridView1_RowCommand(object sender,GridViewCommandEventArgs
e)
{
if (e.CommandName == "insert")
{
SqlDataSource1.InsertParameters.Clear();
SqlDataSource1.InsertParameters.Add("xm",TextBox1.Text);
SqlDataSource1.InsertParameters.Add("xb",
TextBox2.Text);
SqlDataSource1.InsertParameters.Add("age",
TextBox3.Text);
SqlDataSource1.InsertParameters.Add("phone",
TextBox4.Text);
SqlDataSource1.InsertParameters.Add("ImagePath",
TextBox5.Text);
SqlDataSource1.Insert();
}
}
这里的语句中参数都采用 string类型。即:
SqlDataSource1.InsertParameters.Add(string,string);
4)数据操作功能 —— 包括选定、删除、修改
1.数据行的选定创建一个“选定”列,在 SelectedIndexChanging事件中添加如下代码,可以选定一行。
GridView1.SelectedIndex = e.NewSelectedIndex;
GridView1.DataBind();
2.数据的删除创建一个删除列,在 RowDeleting事件中添加如下代码,
可以删除一列。
string XueHao=gv.Rows[e.RowIndex].Cells[0].Text;
SqlCommand delCmd = new SqlCommand("delete student where
XueHao='" + XueHao + "'",con);
delCmd.ExecuteNonQuery();
gvDataBind(); //实现数据绑定的函数十一、用代码实现 GridView的选定、删除、修改等操作
3.数据的修改创建一个“编辑、更新、取消”列,在
RowEditing事件中添加如下代码,将一行变成编辑状态。
gv.EditIndex = e.NewEditIndex;
gvDataBind();//实现数据绑定函数在 RowCancelingEdit事件中添加如下代码,将一行取消编辑。
gv.EditIndex = -1;
gvDataBind();//实现数据绑定函数在 RowUpdating事件中添加如下代码,实现数据的更新和保存。
updateCmd = new SqlCommand("update student set
XingMing=@XingMing where XueHao=@XueHao",con);
SqlParameter prmUpdateXueHao = new
SqlParameter("@XueHao",SqlDbType.VarChar,5,"XueHao");
updateCmd.Parameters.Add(prmUpdateXueHao);
SqlParameter prmUpdateXingMing = new
SqlParameter("@XingMing",SqlDbType.VarChar,10,
"XingMing");
updateCmd.Parameters.Add(prmUpdateXingMing);
prmUpdateXueHao.Direction=ParameterDirection.Input;
prmUpdateXueHao.Value =
gv.Rows[e.RowIndex].Cells[0].Text;
prmUpdateXingMing.Direction = ParameterDirection.Input;
prmUpdateXingMing.Value =
((TextBox)gv.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
updateCmd.ExecuteNonQuery();
gv.EditIndex = -1;
gvDataBind();
GridView控件应用举例
1)使用 Command,DataReader和 DataSet两种方法实现数据绑定。
方法 1:使用 Command和 DataReader
string sqlStr = "select * from Student";
sqlCmd = new SqlCommand(sqlStr,con);
reader = sqlCmd.ExecuteReader();
gv.DataSource = reader;
gv.DataBind();
方法 2:使用 DataSet数据集
SqlDataAdapter sqlDa;
string sqlStr = "select * from Student";
sqlCmd = new SqlCommand(sqlStr,con);
ds = new DataSet();
sqlDa = new SqlDataAdapter();
sqlDa.SelectCommand = sqlCmd;
sqlDa.Fill(ds,"student");
//return ds.Tables[“student”].DefaultView;
gv.DataSource = ds.Tables["student"].DefaultView;
gv.DataBind();
2)实现分页显示功能步骤:
1.设置 AllowPaging为 true;
2.在 PagIndexChanging事件中添加如下代码:
gv.PageIndex = e.NewPageIndex;
gv.DataSource=getView();
gv.DataBind();
其中 getView()函数用于得到一个数据源。
3)实现排序功能步骤:
1)设置 AllowSorting为 true;
2)在 Sorting事件中添加如下代码:
DataView dv;
dv=getView();
dv.Sort = e.SortExpression;
gv.DataSource =dv;
gv.DataBind();
其中 getView()函数用于得到一个数据源。同前面功能相同。