>

NET数据控件

- 编辑:www.bifa688.com -

NET数据控件

  数据服务器控件就是能够显示数据的控件,与那些简单格式的列表控件不同,这些控件不但提供显示数据的丰富界面(可以显示多行多列数据并根据用户定义来显示),还提供了修改、删除和插入数据的接口。

ASP.NET服务器控件GridView

1ASP.NET服务器控件GridView使用

本教程不介绍服务器端控件的呈现,事件处理,状态等理论知识,只介绍服务器端控件的使用操作,如果您对服务器控件的知识感兴趣,请参阅《ASP.NET服务器控件高级编程》

阅读本文时最好和 文档 《ASP.NET服务器控件使用之GridView数据源ObjectDataSource》

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

1.1GridView概述

显示表格数据是软件开发中的一个周期性任务。ASP.NET提供了许多工具来在网格中显示表格数据,例如GridView控件。通过使用GridView控件,您可以显示、编辑和删除多种不同的数据源(例如数据库、XML文件和公开数据的业务对象)中的数据。

可以使用GridView来完成以下操作:

  • 通过数据源控件自动绑定和显示数据。
  • 通过数据源控件对数据进行选择、排序、分页、编辑和删除。

另外,还可以通过以下方式自定义GridView控件的外观和行为:

  • 指定自定义列和样式。
  • 利用模板创建自定义用户界面元素。
  • 通过处理事件将自己的代码添加到GridView控件的功能中。

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

1.2GridView数据绑定

1.2.1概述

GridView控件提供了两个用于绑定到数据的选项:

  • 使用DataSourceID属性进行数据绑定,此选项让您能够将GridView控件绑定到数据源控件。建议使用此方法,因为它允许GridView控件利用数据源控件的功能并提供了内置的排序、分页和更新功能。
  • 使用DataSource属性进行数据绑定,此选项使您能够绑定到包括ADO.NET数据集和数据读取器在内的各种对象。此方法需要为所有附加功能(如排序、分页和更新)编写代码。

当使用DataSourceID属性绑定到数据源时,GridView控件支持双向数据绑定。除可以使该控件显示返回的数据之外,还可以使它自动支持对绑定数据的更新和删除操作。

1.2.2使用DataSourceID属性进行数据绑定

请参见《ASP.NET服务器控件使用之GridView数据源ObjectDataSource》

1.2.3使用BoundField标签来显示绑定的数据

数据绑定控件(例如GridView和DetailsView)使用BoundField类以文本显示字段的值。根据在其中使用BoundField对象的数据绑定控件,该对象会以不同的方式显示。例如,GridView控件将BoundField对象显示为一列,而DetailsView控件则将该对象显示为一行。

若要指定在BoundField对象中显示的字段,

请将DataField属性设置为字段的名称。

通过将HtmlEncode属性设置为true,可以在显示字段的值之前对其进行HTML编码。

通过设置DataFormatString属性,可以将自定义格式化字符串应用到字段的值。默认情况下,只有当数据绑定控件处于只读模式时,格式化字符串才能应用到字段值。当数据绑定控件处于编辑模式时,

若要将格式化字符串应用到显示的值,请将ApplyFormatInEditMode属性设置为true。

如果字段的值为空,则可以通过设置NullDisplayText属性显示自定义标题。

通过将ConvertEmptyStringToNull属性设置为true,BoundField对象,也可以将空字符串字段值自动转换为空值。

通过将Visible属性设置为false,可以在数据绑定控件中隐藏BoundField对象。

若要防止字段的值在编辑模式中被修改,请将ReadOnly属性设置为true。

在支持插入记录的数据绑定控件(例如DetailsView控件)中,通过将InsertVisible属性设置为false,可以隐藏BoundField对象。这种情况通常出现在想要在插入模式中隐藏自动生成的键字段时。

可以自定义BoundField对象的标头和脚注部分。若要在标头或脚注部分显示标题,请分别设置HeaderText或FooterText属性。可以通过设置HeaderImageUrl属性来显示图像,而不是在标头部分中显示文本。

通过将ShowHeader属性设置为false,可以将标头部分隐藏在BoundField对象中。

您还可以通过为字段的不同部件设置样式属性来自定义BoundField对象的外观(字体颜色、背景颜色等)。下表列出了不同的样式属性。

样式属性

说明

ControlStyle

BoundField对象的子Web服务器控件的样式设置。

FooterStyle

BoundField对象的脚注部分的样式设置。

HeaderStyle

BoundField对象的标头部分的样式设置。

ItemStyle

BoundField对象中数据项的样式设置。

1.2.4使用TemplateField标签来显示自定义内容的字段

数据绑定控件(如GridView和DetailsView)使用TemplateField类来为每个显示的记录显示自定义内容。需要显示某个预定义的数据控件字段(如BoundField)未提供的数据绑定控件中的内容时,使用TemplateField类来创建自定义用户界面。根据在其中使用TemplateField对象的数据绑定控件,该对象会以不同的方式显示。例如,GridView控件将TemplateField对象显示为一列,而DetailsView控件则将该对象显示为一行。

可以使用下表中列出的模板为TemplateField对象的不同部分定义自定义模板。

模板

说明

AlternatingItemTemplate

TemplateField对象中的交替项指定要显示的内容。

EditItemTemplate

TemplateField对象中处于编辑模式中的项指定要显示的内容。

FooterTemplate

TemplateField对象的脚注部分指定要显示的内容。

HeaderTemplate

TemplateField对象的标头部分指定要显示的内容。

InsertItemTemplate

TemplateField对象中处于插入模式中的项指定要显示的内容。只有DetailsView控件支持该模板。

ItemTemplate

TemplateField对象中的项指定要显示的内容。

1.2.5演练:GridView显示数据

本演练假定你已经做完《ASP.NET服务器控件使用之GridView数据源ObjectDataSource》(

使用BoundField显示数据

1.在C:Documents and SettingsAdministratorMy DocumentsVisual Studio 2008ProjectsObjectDataSourceTest下找到ObjectDataSourceTest.sln,双击打开Visual studio 2008

2.打开Default.aspx设计器,点击坐下放“源”,打开了源码编辑器,找到asp:GridView标签。

asp:GridView标签下的代码好像是这样

必发88手机版 1必发88手机版 2

<asp:GridView ID="EmployeesGridView" DataSourceID="EmployeesObjectDataSource" AutoGenerateColumns="False"AllowSorting="True"AllowPaging="True"PageSize="2"DataKeyNames="Employee_ID" RunAt="server" ><HeaderStyle backcolor="lightblue" forecolor="black"/><Columns>                <asp:ButtonField Text="Details"HeaderText="Show Details"CommandName="Select"/>  <asp:BoundField DataField="Employee_ID" HeaderText="Employee ID" SortExpression="Employee_ID" /><asp:BoundField DataField="Employee_Name"  HeaderText="Employee Name" SortExpression="Employee_Name" /><asp:BoundField DataField="Age"   HeaderText="Age" SortExpression="Age" />                    </Columns>                </asp:GridView>

View Code

BoundField指定GridView表格下的一列,我们就那

<asp:BoundField DataField="Employee_ID" HeaderText="Employee ID" SortExpression="Employee_ID" />来说,

DataField属性指定BoundField列绑定sql“SELECT Employee_ID, Employee_Name, Age, Login_ID, Login_Password FROM employee_table_2”中的哪一列。

HeaderText属性指明显示的列名,SortExpression表示点击该列名时重新排序的字段

3.按Ctrl F5运行,您将看到以下页面

必发88手机版 3

使用TemplateField显示数据

1.在C:Documents and SettingsAdministratorMy DocumentsVisual Studio 2008ProjectsObjectDataSourceTest下找到ObjectDataSourceTest.sln,双击打开Visual studio 2008

2.打开Default.aspx设计器,点击坐下放“源”,打开了源码编辑器,找到asp:GridView标签。在asp:GridView标签下的Column下加上如下代码:

必发88手机版 4必发88手机版 5

<asp:TemplateField><HeaderTemplate>Login_Info</HeaderTemplate><ItemTemplate>Login ID:<%#DataBinder.Eval(Container.DataItem, "Login_ID") %> <br />Login Password:<%#DataBinder.Eval(Container.DataItem, "Login_Password") %> </ItemTemplate></asp:TemplateField>

View Code

一切搞定之后代码开起来是这样:

必发88手机版 6必发88手机版 7

<asp:GridView ID="EmployeesGridView" DataSourceID="EmployeesObjectDataSource" AutoGenerateColumns="False"AllowSorting="True"AllowPaging="True"PageSize="2"DataKeyNames="Employee_ID" RunAt="server" ><HeaderStyle backcolor="lightblue" forecolor="black"/><Columns>                <asp:ButtonField Text="Details"HeaderText="Show Details"CommandName="Select"/>  <asp:BoundField DataField="Employee_ID" HeaderText="Employee ID" SortExpression="Employee_ID" /><asp:BoundField DataField="Employee_Name"  HeaderText="Employee Name" SortExpression="Employee_Name" /><asp:BoundField DataField="Age"   HeaderText="Age" SortExpression="Age" />  <asp:TemplateField><HeaderTemplate>Login_Info</HeaderTemplate><ItemTemplate>Login ID:<%#DataBinder.Eval(Container.DataItem, "Login_ID") %> <br />Login Password:<%#DataBinder.Eval(Container.DataItem, "Login_Password") %> </ItemTemplate></asp:TemplateField>                  </Columns>                 </asp:GridView>

View Code

DataBinder.Eval方法(Object, String)

在运行时计算数据绑定表达式。

参数

container

表达式根据其进行计算的对象引用。此标识符必须是以页的指定语言表示的有效对象标识符。

expression

从container到要放置在绑定控件属性中的公共属性值的导航路径。此路径必须是以点分隔的属性或字段名称字符串,如C#中的"Tables[0].DefaultView.[0].Price"或Visual Basic中的"Tables.DefaultView..Price"。

返回值

Object,它是数据绑定表达式的计算结果。

按Ctrl F5,运行,如果一切正常,您应该看到如下页面

必发88手机版 8

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

1.3对GridView数据排序

GridView控件提供了内置排序功能,无需任何编码。您可以通过为列设置自定义SortExpression属性值并使用Sorting和Sorted事件,进一步自定义GridView控件的排序功能。

1.3.1GridView控件的排序原理

GridView控件不自己执行列排序,而是依赖数据源控件来代表它执行排序。该控件提供用于排序的用户界面,如显示在网格每一列最上方的LinkButton控件。但是,GridView控件依赖于它所绑定到的数据源控件的数据排序功能。

如果绑定的数据源控件可以排序数据,则选择数据后,GridView控件可以通过将SortExpression传递给数据源与该数据源控件进行交互并请求排序后的数据。不是所有的数据源控件都支持排序;例如,XmlDataSource控件就不支持排序。但如果数据源控件支持排序,GridView就可以利用它。下面的列表描述了数据源控件和支持排序所需的配置:

l如果SqlDataSource和AccessDataSource控件的DataSourceMode属性设置为DataSet,或SortParameterName属性设置为DataSet或DataReader,则这两个控件可以排序。

l如果ObjectDataSource控件的SortParameterName属性设置为基础对象所支持的属性值,则该控件可以排序。

1.3.2GridView控件的排序过程

通过将GridView控件的AllowSorting属性设置为true,即可启用该控件中的默认排序行为。将此属性设置为true会使GridView控件将LinkButton控件呈现在列标题中。此外,该控件还将每一列的SortExpression属性隐式设置为它所绑定到的数据字段的名称。例如,如果网格所包含的一列显示的是Northwind示例数据库中“Employees”表的City列,则该列的SortExpression属性将被设置为City。

在运行时,用户可以单击某列标题中的LinkButton控件按该列排序。单击该链接会使页面执行回发并引发GridView控件的Sorting事件。排序表达式(默认情况下是数据列的名称)作为事件参数的一部分传递。Sorting事件的默认行为是GridView控件将排序表达式传递给数据源控件。数据源控件执行其选择查询或方法,其中包括由网格传递的排序参数。

执行完查询后,将引发网格的Sorted事件。此事件使您可以执行查询后逻辑,如显示一条状态消息等。最后,数据源控件将GridView控件重新绑定到已重新排序的查询的结果。

GridView控件不检查数据源控件是否支持排序;在任何情况下它都会将排序表达式传递给数据源。如果数据源控件不支持排序并且由GridView控件执行排序操作,则GridView控件会引发NotSupportedException异常。可以用Sorting事件的处理程序捕获此异常,并检查数据源以确定数据源是否支持排序,还是使用自己的排序逻辑进行排序。

1.3.3控制对个别列的排序

通过设置网格的AllowSorting属性,您可以按默认方式对列进行排序。将个别列的SortExpression属性设置为空字符串,可以禁用对个别字段(BoundColumn或TemplateColumn字段)的排序。

1.3.4演练:GridView排序

见上一节演练

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

1.4对GridView数据排序

ObjectDataSource控件处理分页的方式是:设置ObjectDataSource的EnablePaging、StartRowIndexParameterName、MaximumRowsParameterName和SelectCountMethod属性,并用正确的参数在业务对象中定义选择方法。当EnablePaging属性设置为true时,SelectParameters集合包含两个额外的参数,一个用于请求的第一行,另一个用于请求的行数。这两个参数的名称由StartRowIndexParameterName和MaximumRowsParameterName属性定义。Select方法应该返回从指定的索引处开始的请求的行数。因为数据可能不是按页大小平均分割的,所以最后一页可能包含较少的行。因此,请求的行数实际上是返回的最大行数。

在关联的数据绑定控件上启用了分页时,数据绑定控件用起始索引和所需的行数调用Select方法。此外,如果设置了SelectCountMethod属性,数据绑定控件在呈现页导航控件前调用此方法。例如,如果GridView控件启用了页大小为5的分页,而SelectCountMethod属性指定的方法返回20,则在页导航中仅显示4页。

SelectCountMethod属性标识用于检索总行数的业务对象方法,以支持数据源分页。仅当EnablePaging属性设置为true时,才计算SelectCountMethod属性。

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

1.5对GridView数据修改

1.5.1启用内置编辑功能

您可以通过以下任一方式启用GridView控件的内置编辑或删除功能:

将AutoGenerateEditButton属性设置为true以启用更新,将AutoGenerateDeleteButton属性设置为true以启用删除。

添加一个CommandField,并将其ShowEditButton属性设置为true以启用更新,将其ShowDeleteButton属性设置为true以启用删除。

创建一个TemplateField,其中ItemTemplate包含多个命令按钮,要进行更新时可将CommandName设置为“Edit”,要进行删除时可设置为“Delete”。有关更多信息,请参见在GridView Web服务器控件中创建自定义列。

1.5.2如何在GridView中进行编辑

GridView控件可以显示一个用户界面,让用户能够编辑各行的内容。通常,可编辑的网格中会有一列包含一个按钮或链接,用户可以通过单击该按钮或链接将所在的行置于编辑模式下。(默认情况下,按钮标题是“编辑”。)

用户保存更改时,GridView控件将更改和主键信息传递到由DataSourceID属性标识的数据源控件,从而调用适当的更新操作。例如,SqlDataSource控件使用已更改的数据作为参数值执行SQL Update语句。ObjectDataSource控件调用其更新方法,并将更改作为参数传递给方法调用。

GridView控件在三个字典集合中将值传递到数据源以进行更新或删除操作:Keys字典、NewValues字典和OldValues字典。可以使用传递到GridView控件的更新或删除事件的参数访问每个字典。

Keys字典包含唯一地标识要更新或删除的记录的字段名称和字段值,并且始终包含键字段的原始值。若要指定哪些字段放置在Keys字典中,可将DataKeyNames属性设置为用逗号分隔的、用于表示数据主键的字段名称的列表。DataKeys集合会用与为DataKeyNames属性指定的字段关联的值自动填充。

注意 DataKeyNames属性中指定的字段的原始主键值存储在视图状态中。如果主键值中包含敏感信息,则应通过将页的ViewStateEncryptionMode属性设置为Always来加密视图状态的内容。

NewValues字典包含正在编辑的行中的输入控件的当前值。OldValues字典包含除键字段以外的任何字段的原始值,键字段包含在Keys字典中。

数据源控件使用Keys、NewValues和OldValues字典中的值作为更新或删除命令的参数。有关如何根据为绑定值创建的字典来创建数据源控件参数的信息,请参见数据源控件如何为数据绑定字段创建参数。

在通过处理RowUpdating或RowDeleting事件将任何这些字典的内容传递到数据源之前,可以对其进行检查或自定义。完成更新或删除后,GridView控件会引发其RowUpdated或RowDeleted事件。这些事件允许执行查询后逻辑。

完成更新或删除并引发了所有事件之后,GridView将重新绑定到数据源控件以显示已更新的数据。

1.5.3演练:在Gridview中进行编辑

本演练显示了如何为Microsoft Visual Studio 2008 ASP.NET网站编辑删除GridView。

先决条件

本演练假定您可以连接到Oracle DataBase实例,并且已建立EMPLOYEE_TABLE_2

表。您还必须对运行Microsoft Internet Information Services 5.0版或更高版本的服务器具有访问权限,并具有创建ASP.NET网页的权限。

EMPLOYEE_TABLE_2建表

必发88手机版 9必发88手机版 10

create table EMPLOYEE_TABLE_2(EMPLOYEE_ID    NUMBER,EMPLOYEE_NAME  VARCHAR2(20),AGE            NUMBER,DEPARTMENT_ID  NUMBER,PROJECT_ID     NUMBER,LOGIN_ID       VARCHAR2(20),LOGIN_PASSWORD VARCHAR2(20))tablespace USERSpctfree 10initrans 1maxtrans 255storage(initial 64Kminextents 1maxextents unlimited  );

View Code

创建新的网站

1.在“文件”菜单中,指向“新建”,选择“网站”。

必发88手机版 11

2.在“新建网站”对话框中,选择“ASP.NET网站”。

3.在“语言”列表中,选择Visual C#,再单击“确定”。

3.在“位置”框中,保留选定的默认HTTP,然后输入网站根目录的位置,使用“浏览”导航及创建新的文件夹。单击“确定”。

必发88手机版 12

4.打开Default.aspx设计器,点击坐下放“源”,打开了源码编辑器,Ctrl A全选

删除系统生成的代码,替换为以下内容

必发88手机版 13必发88手机版 14

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title>无标题页</title></head><body>    <form id="form1" runat="server">    <div>     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"         DataSourceID="SqlDataSource1" Height="278px" Width="675px"         DataKeyNames="employee_id" onrowupdating="GridView1_RowUpdating">        <Columns>            <asp:CommandField ShowEditButton="True" />            <asp:CommandField ShowDeleteButton="true" />            <asp:TemplateField>            <ItemTemplate>            <%#Eval("employee_name") %>            </ItemTemplate>            <EditItemTemplate><asp:TextBox runat="server" Text='<%#Eval("employee_name")%>' ID="EmployeeName"></asp:TextBox></EditItemTemplate>            </asp:TemplateField>        </Columns>    </asp:GridView>    <asp:SqlDataSource ID="SqlDataSource1" runat="server"         ConnectionString="<%$ ConnectionStrings:DataAccess %>"         ProviderName="<%$ ConnectionStrings:DataAccess.ProviderName %>"         SelectCommand="select * from employee_table_2" UpdateCommand="update employee_table_2 set employee_name=:employee_name where employee_id=:employee_id"         DeleteCommand="delete from employee_table_2 where employee_id=:employee_id">    </asp:SqlDataSource>    </div>    </form></body></html>

View Code

5.打开Default.aspx.cs

Ctrl A全选,删除系统生成代码,替换为以下代码:

必发88手机版 15必发88手机版 16

Codeusing System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq; public partial class _Default : System.Web.UI.Page {    protected void Page_Load(object sender, EventArgs e)    {     }    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)    {        int index = GridView1.EditIndex;        GridViewRow row = GridView1.Rows[index];         // Get the controls that contain the updated values. In this        // example, the updated values are contained in the TextBox         // controls declared in the edit item templates of each TemplateField         // column fields in the GridView control.        TextBox EmployeeName = row.FindControl("EmployeeName");         // Add the updated values to the NewValues dictionary. Use the        // parameter names declared in the parameterized update query         // string for the key names.        e.NewValues["employee_name"] = EmployeeName.Text;    }}

View Code

6.在web.config中配置数据库连接

1)什么是web.config

可扩展的基础结构是ASP.NET配置系统的一大特色,该基础结构使您可以在最初部署ASP.NET应用程序时定义配置设置,以便可以随时添加或修改这些配置设置,同时对运作着的Web应用程序和服务器产生的影响也将被减至最小。

2)配置连接

在web.config的<configuration></configuration>下加上

<connectionStrings><add name="ConnectionString" connectionString="Data Source=HCDB;Persist Security Info=True;User ID=huchen;Password=huchen;Unicode=True" providerName="System.Data.OracleClient"/></connectionStrings>

其中Data Source是指tns中的Host String, User ID是oracle登陆用户名,Password是oracle登陆密码。providerName是数据提供者。

7.按Ctrl F5启动运行,如果一切顺利,您讲看到以下页面:

必发88手机版 17

  ASP.NET4.0提供的主要数据服务器控件:

    1.GridView:是一个全方位的网格控件,能够显示一整张表的数据,它是ASP.NET中最为重要的数据控件。

    2.DetailsView:是用来一次显示一条记录。

    3.FormView:也是用来一次显示一条记录,与DetailsView不同的是,FormView是基于模板的,可以使布局具有灵活性。

    4.DataList:可用来自定义显示各行数据库信息,显示的9格式在创建的模板中定义。

    5.Repeater:生成一系列单个项,可以使用模板定义页面上单个项的布局,在页面运行时,该控件为数据源中的每个项重复相应的布局。

    6.ListView:可以绑定从数据源返回的数据并显示它们,它会按照使用模板和样式定义的格式显示数据。

    7.Chart:新增的图表控件,能实现柱状图、饼图等多种图表数据。

  GridView控件

    GridView控件,可以显示、编辑和删除来自不同数据源的数据。

    GridView控件的主要功能:

      1.绑定和显示数据。

      2.对绑定其中的数据进行选择、排序、分页、编辑和删除。

      3.自定义列和样式。

      4.自定义用户界面元素。

      5.在事件处理程序中加入代码来完成与GridView控件的交互。

    GridView控件的常用属性:

      1.AllowPaging:获取或设置指示是否启用分页的值。

      2.AllowSorting:获取或设置指示是否启用排序的值。

      3.AlternatingRoeStyle:获取对TableItemStyle对象的引用,使用该对象可以设置GridView控件中的交替数据行的外观。

      4.AutoGenerateColumns:获取或设置一个值,该值指示是否为数据源中的每一字段自动创建BoundColumn对象并在GridView控件中显示这些对象。

      5.AutoGenerateDeleteButton:获取或设置一个值,该值指示每一个数据行都带有删除按钮的CommandField字段列是否自动添加到GridView控件。

      6.AutoGenerateSelectButton:获取或设置一个值,该值指示每一个数据行都带有选择按钮的CommandField字段列是否自动添加到GridView控件。

      7.BottomPagerRow:获取一个GridViewRow对象,该对象表示GridView控件中的底部页导航行。

      8.Columns:获取表示GridView控件各列的对象集合。

      9.DataMember:当数据源包含多个不同的数据项列表时,获取或设置数据绑定控件绑定到的数据列表的名称。

      10.PageIndex:获取或设置当前显示页的索引。

      11.DataSource:获取或设置源,该源包含用于填充控件中的项的值列表。

      12.PageCount:获取显示GridView控件中各项所需的总页数。

      13.PageSize:获取或设置要在GridView控件的单页上显示的项数。

      14.SelectedIndex:获取或设置GridView控件中选定项的索引。

    GridView控件的常用方法:

      1.DataBind:将数据源绑定到GridView控件。

      2.DeleteRow:从数据源中删除位于指定索引位置的记录。

      3.IsBindableType:确定指定的数据类型是否能绑定到GridView控件中的列。

      4.Sort:根据指定的排序表达式和方向对GridView控件进行排序。

      5.UpdateRow:使用行的字段值更新位于指定行索引位置的记录。

    GridView控件的事件:

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

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

      3.RowCancelingEdit:单击编辑模式中某一行的取消按钮之后,在该行退出编辑模式之前发生。

      4.RowCommand:当单击GridView控件中的按钮时发生。

      5.RowCreate:在GridView控件中创建行时发生。

      6.RowDataBound:在GridView控件中将数据行绑定到数据时发生。

      7.RowDeleted:在单击某一行的删除按钮时,但在GridView控件删除该行之后发生。

      8.RowDeleting:在单击某一行的删除按钮时,但在GridView控件删除该行之前发生。

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

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

      11.SelectedIndexChanged:发生在单击某一行的选择按钮后,GridView控件对相应的选择操作进行处理之后。

      12.SelectedIndexChanging:发生在单击某一行的选择按钮后,GridView控件对相应的选择操作进行处理之前。

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

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

    GridView控件中的绑定数据。

      在GridView控件中绑定数据有两种方式:一是使用多值绑定,二是使用数据源控件。

        1.使用多值绑定。使用多值绑定方法绑定GridView控件。

          在Web.config文件中添加如下代码:

必发88手机版 18必发88手机版 19

1   <connectionStrings>2     <add name="ConnectionString" connectionString="Data Source=追风的蜗牛;Initial Catalog=Student;Integrated Security=True"/>3   </connectionStrings>

View Code

          

          在Default.aspx中添加如下代码:

必发88手机版 20必发88手机版 21

 1     <div> 2         <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" > 3             <AlternatingRowStyle BackColor="White" /> 4             <EditRowStyle BackColor="#2461BF" /> 5             <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 6             <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 7             <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 8             <RowStyle BackColor="#EFF3FB" /> 9             <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />10             <SortedAscendingCellStyle BackColor="#F5F7FB" />11             <SortedAscendingHeaderStyle BackColor="#6D95E1" />12             <SortedDescendingCellStyle BackColor="#E9EBEF" />13             <SortedDescendingHeaderStyle BackColor="#4870BE" />14         </asp:GridView>15     </div>

View Code

          Default.aspx.cs文件中的代码如下:

必发88手机版 22必发88手机版 23

 1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.SqlClient; 5 using System.Linq; 6 using System.Web; 7 using System.Web.Configuration; 8 using System.Web.UI; 9 using System.Web.UI.WebControls;10 11 namespace WebApplication112 {13     public partial class Default : System.Web.UI.Page14     {15         private string connectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;16         protected void Page_Load(object sender, EventArgs e)17         {18             if (!this.IsPostBack)19             {20                 Binding();21             }22         }23         private void Binding()24         {25             string selectSql = "select * from Student";//获取学生信息26             SqlConnection connection = new SqlConnection(connectionString);27             SqlCommand command = new SqlCommand(selectSql, connection);28             SqlDataAdapter dataAdapter = new SqlDataAdapter;29             DataSet dataSet = new DataSet();30             //打开数据库并读取信息31             try32             {33                 connection.Open();34                 dataAdapter.Fill(dataSet, "Student");35                 //把存储在DataSet中的数据绑定到GridView控件中36                 this.GridView1.DataSource = dataSet.Tables["Student"].DefaultView;37                 this.GridView1.DataBind();38             }39             catch (Exception ex)40             {41                 Response.Write("读取过程发生错误:"   ex.Message.ToString;42             }43             finally44             {45                 connection.Close();46             }47         }48     }49 }

View Code

        2.使用数据源控件。使用数据源控件绑定GridView控件。

          在Web.config文件中添加如下代码:

必发88手机版 24必发88手机版 25

1   <connectionStrings>2     <add name="ConnectionString" connectionString="Data Source=追风的蜗牛;Initial Catalog=Student;Integrated Security=True"/>3   </connectionStrings>

View Code

          在Default.aspx中添加如下代码:

必发88手机版 26必发88手机版 27

 1     <div> 2         <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:ConnectionString %>" 3              ProviderName="System.Data.SqlClient" DataSourceMode="DataReader" SelectCommand="select * from [Student]"> 4         </asp:SqlDataSource> 5         <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" DataSourceID="SqlDataSource1" > 6             <AlternatingRowStyle BackColor="White" /> 7             <EditRowStyle BackColor="#2461BF" /> 8             <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 9             <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />10             <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />11             <RowStyle BackColor="#EFF3FB" />12             <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />13             <SortedAscendingCellStyle BackColor="#F5F7FB" />14             <SortedAscendingHeaderStyle BackColor="#6D95E1" />15             <SortedDescendingCellStyle BackColor="#E9EBEF" />16             <SortedDescendingHeaderStyle BackColor="#4870BE" />17         </asp:GridView>18     </div>

View Code

  GridView控件的列。

    把GridView控件的属性AutoGenerateColumns设置为true,在控件中显示的列都是自动生成的。但在很多种情况下,GridView控件的每一列的显示都需要实现定义。

    GridView控件提供了几种类型的列以方便操作:

      1.BoundField:显示数据源中某个字段的值,它是GridView控件的默认列类型。

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

      3.CheckBoxField:为GridView控件中的每一项显示一个复选框。

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

      5.HyperLinkField:将数据源中某个字段的值显示为超链接。

      6.ImagField:为GridView控件中的每一项显示一个图象。

      7.TemplateField:根据指定的模版为GridView控件中每一项显示用户定义的内容。

    所有的列的编辑都可以通过字段对话框来进行,进入字段对话框的方式有两种:

      1.选中要编辑的GridView控件,单击右上角的小按钮,在弹出的快捷菜单中选择编辑列,命令即可弹出字段对话框。

      2.选中要编辑的GridView控件,在属性窗口中找到Columns属性,选中该属性,单击在该属性最右边出现的按钮即可弹出字段对话框。

    实现定义GridView控件的各个列,需要把AutoGenerateColumns设置为false。避免在GridView控件中出现不必要的列。

  GridView控件的排序。

    GridView控件支持对显示在其中的数据进行排序,只需要把属性AllowSorting设置为true即可。

    实现排序功能:

      在Web.config文件中添加如下代码:

必发88手机版 28必发88手机版 29

1   <connectionStrings>2     <add name="ConnectionString" connectionString="Data Source=追风的蜗牛;Initial Catalog=Student;Integrated Security=True"/>3   </connectionStrings>

View Code

      在Default.aspx中添加如下代码:

必发88手机版 30必发88手机版 31

 1     <div> 2         <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:ConnectionString %>" 3              ProviderName="System.Data.SqlClient" DataSourceMode="DataSet" SelectCommand="select * from [Student]"> 4         </asp:SqlDataSource> 5         <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" DataSourceID="SqlDataSource1"  6             AutoGenerateColumns="False" AllowSorting="true"> 7             <AlternatingRowStyle BackColor="White" /> 8             <Columns> 9                 <asp:ButtonField DataTextField="stuNo" Text="按钮" HeaderText="学号" SortExpression="stuNo" />10                 <asp:ButtonField DataTextField="Class" Text="按钮" HeaderText="班级" SortExpression="Class" />11                 <asp:ButtonField DataTextField="stuName" Text="按钮" HeaderText="姓名" SortExpression="stuName" />12                 <asp:ButtonField DataTextField="Age" Text="按钮" HeaderText="年龄" SortExpression="Age" />13             </Columns>14             <EditRowStyle BackColor="#2461BF" />15             <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />16             <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />17             <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />18             <RowStyle BackColor="#EFF3FB" />19             <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />20             <SortedAscendingCellStyle BackColor="#F5F7FB" />21             <SortedAscendingHeaderStyle BackColor="#6D95E1" />22             <SortedDescendingCellStyle BackColor="#E9EBEF" />23             <SortedDescendingHeaderStyle BackColor="#4870BE" />24         </asp:GridView>25     </div>

View Code

    其实GridView控件自己并不执行排序,它是通过数据源控件实现排序的。GridView控件只不过提供一个显示和操作的数据界面而已,而真实的数据排序是它所绑定到的数据源控件。如果所绑定的数据源控件可以排列数据,则选择数据后,GridView控件可以通过列的属性SortExpression传递给数据源与该数据源控件进行交互并请求排序后的数据。

    并不是所有的数据源控件都支持排序的,支持排序的数据源控件所需要的配置如下:

      1.SqlDataSource控件的属性DataSourceMode设置为DataSet,或属性SortParameterName设置为DataSet或DataReader。

      2.AccessDataSource控件的属性DataSourceMode设置为DataSet,或属性SortParameterName设置为DataSet或DataReader。

      3.ObjectDataSource控件的属性SortParameterName设置为基础对象所支持的属性值。

    当所绑定的数据源控件可以排序数据时,只要将GridView控件的AllowSorting属性设置为true,即可启动该控件中的默认排序行为。将此属性设置为true会使GridView控件将LinkButton控件呈现在列标题中。此外,该控件还将每一列的SortExpression属性隐式设置为它所绑定到的数据字段的名称。

    默认情况下,当把AllowSorting属性设置为true时,GridView控件将支持所有列可排序,但可以通过设置列的属性SortExpression为空字符串禁用对这个列的排序操作。

    还可以对GridView控件进行自定义排序行为,可以在Sorting事件中编写自定义的排序代码。在Sorting事件处理程序中可以进行如下的操作:

      1.自定义传递给数据源控件的排序表达式。默认情况下,排序表达式是单个列的名称,可以在处理程序中修改排序表达式,然后将修改过的排序表达式传递给数据源控件。

      2.创建自己的排序逻辑。如果使用的数据源不支持排序,则可以用自己的代码执行排序,然后将网格绑定到排序后的数据。

  GridView控件的分页

    GridView控件支持对所绑定的数据源中的项进行分页。

    属性AllowPaging决定是否使用分页显示。当AllowingPaging属性设置为true时,PagerSettings属性允许自定义GridView控件的分页界面。

    PagerSettings属性对应PagerSettings类,它提供一些属性,这些属性支持自定义GridView控件的分页界面,PagerSettings类的属性如下:

      1.FirstPageImageUrl:获取或设置为第一页按钮显示的图像URL。

      2.FirstPageText:获取或设置为第一页按钮显示的文字。

      3.LastPageImageUrl:获取或设置为最后一页按钮显示的图像URL。

      4.LastPageText:获取或设置为最后一页按钮显示的文字。

      5.Mode:获取或设置支持分页的控件中的页导航控件的显示模式。

      6.NextPageImageUrl:获取或设置为下一页按钮显示的图像的URL。

      7.NextPageText:获取或设置为下一页按钮显示的文字。

      8.PageButtonCount:获取或设置在Mode属性设置为Numeric或NumericFirstLast值时页面导航中显示的页按钮的数量。

      9.Position:获取或设置一个值,该值指示页导航的显示位置。

      10.PreviousPageImageUrl:获取或设置为上一页按钮显示的图像的URL。

      11.PreviousPageText:获取或设置为上一页按钮显示的文字。

      12.Visible:获取或设置一个值,该值指示是否在支持分页的控件中显示分页控件。

    通过设置PagerSettings类的Mode属性可以指定GridView控件的分页模式。Mode属性的值包括:

      1.NextPrevious:上一页按钮和下一页按钮模式。

      2.NextPreviousFirstLast:上一页按钮、下一页按钮、第一页按钮和最后一页按钮模式。

      3.Numeric:可以直接访问页面的带编号的链接按钮模式。

      4.NumericFirstLast:带编号的链接按钮、第一页链接按钮和最后一页链接按钮模式。

    GridView控件的PageSettings属性的设置可以在GridView控件的属性窗口中进行。

    在设置GridView控件支持分页功能时,还需要设置属性PageSize的值,来指示在每一页中最多显示的数据条。

    实现分页功能:

      在Web.config文件中添加如下代码:

必发88手机版 32必发88手机版 33

1   <connectionStrings>2     <add name="ConnectionString" connectionString="Data Source=追风的蜗牛;Initial Catalog=Student;Integrated Security=True"/>3   </connectionStrings>

View Code

      在Default.aspx中添加如下代码:

必发88手机版 34必发88手机版 35

 1     <div> 2         <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:ConnectionString %>" 3              ProviderName="System.Data.SqlClient" DataSourceMode="DataSet" SelectCommand="select * from [Student]"> 4         </asp:SqlDataSource> 5         <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" DataSourceID="SqlDataSource1"  6             AutoGenerateColumns="False" AllowSorting="true" AllowPaging="True" PageSize="5"> 7             <AlternatingRowStyle BackColor="White" /> 8             <PagerSettings Mode="Numeric" /> 9             <Columns>10                 <asp:ButtonField DataTextField="stuNo" Text="按钮" HeaderText="学号" SortExpression="stuNo" />11                 <asp:ButtonField DataTextField="Class" Text="按钮" HeaderText="班级" SortExpression="Class" />12                 <asp:ButtonField DataTextField="stuName" Text="按钮" HeaderText="姓名" SortExpression="stuName" />13                 <asp:ButtonField DataTextField="Age" Text="按钮" HeaderText="年龄" SortExpression="Age" />14             </Columns>15             <EditRowStyle BackColor="#2461BF" />16             <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />17             <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />18             <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />19             <RowStyle BackColor="#EFF3FB" />20             <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />21             <SortedAscendingCellStyle BackColor="#F5F7FB" />22             <SortedAscendingHeaderStyle BackColor="#6D95E1" />23             <SortedDescendingCellStyle BackColor="#E9EBEF" />24             <SortedDescendingHeaderStyle BackColor="#4870BE" />25         </asp:GridView>26     </div>

View Code

  GridView控件的模板列

    GridView控件的列的类型中有一个名为TemplateField的列,该列为模板列,可以利用它根据指定的模版为GridView控件中每一项显示用户定义的内容。

    可以使用TemplateField对象制定包含标记和控件的模版,TemplateField对相对应TemplateField类,该类提供了不同部分定义的自定义模版,使用不同的自定义模版可以定义不同的部分,如下:

      1.AlternatingItemTemplate:为TemplateField对象中的交替项指定要显示的内容。

      2.EditItemTemplate:为TemplateField对象中处于编辑模式中的项指定要显示的内容。

      3.FooterTemplate:为TemplateField对象的脚注部分指定要显示的内容。

      4.HeaderTemplate:为TemplateField对象的标头部分指定要显示的内容。

      5.InsertItemTemplate:为TemplateField对象中处于插入模式中的项指定要显示的内容。只有DetailsView控件支持该模版。

      6.ItemTemplate:为Template对象中的项指定要显示的内容。

    创建模版

      在GridView控件的定义标记中使用标记<asp:TemplateField>即可定义模版。

      模版其实就是一个容器,在里面可以放置各种控件、标记以及文字等以自定义列的显示样式和布局。

      模板列的创建也可以通过VS提供的可视化界面进行操作,在.aspx页面的设计视图中选中要编辑模板列的GridView控件,单击右上角的小按钮,在弹出的菜单中选择编辑列命令,在弹出的字段对话框中选中TemplateField,单击添加按钮即可完成一个模板列的创建,然后可以利用该模板列进行具体格式的定义。

  GridView控件行的选取

    GridView控件允许用户在表格中选取一行,可能在GridView控件中选取一行并不执行任何功能,但通过添加选定内容功能,可以向网格添加一些功能,在用户选取某行时进行一些操作。由于在行被选取的过程中和被选取后分别将引发事件SelectedIndexChanging和SelectedIndexChanged,因此可以在这两个事件的处理程序中加入一些自定义代码以实现自定义的功能。

    GridView控件的行的选取功能是通过添加选择列来作为选取行的触发器,选择列的生成有两种方式:

      1.设置GridView控件的属性AutoGenerateSelectButton为true,在网格中会自动生成一个选择列。

      2.在字段对话框中找到CommandField,选中选择类型,单击添加按钮,会在网格中添加一个选择列。

    实现行的选取功能:

      在Web.config文件中添加如下代码:

必发88手机版 36必发88手机版 37

1  <connectionStrings>2     <add name="ConnectionString" connectionString="Data Source=追风的蜗牛;Initial Catalog=Student;Integrated Security=True"/>3   </connectionStrings>

View Code

      在Default.aspx中添加如下代码:

必发88手机版 38必发88手机版 39

 1     <div> 2         <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:ConnectionString %>" 3              ProviderName="System.Data.SqlClient" DataSourceMode="DataSet" SelectCommand="select * from [Student]"> 4         </asp:SqlDataSource> 5         <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" DataSourceID="SqlDataSource1"  6             AutoGenerateColumns="False" AutoGenerateSelectButton="true" AllowSorting="true" AllowPaging="True" PageSize="5" 7              OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> 8             <Columns> 9                 <asp:BoundField DataField="stuNo" HeaderText="学号" />10                 <asp:BoundField DataField="Class" HeaderText="班级" />11                 <asp:BoundField DataField="stuName" HeaderText="姓名" />12                 <asp:BoundField DataField="Age" HeaderText="年龄" />13             </Columns>14             <EditRowStyle BackColor="#2461BF" />15             <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />16             <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />17             <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />18             <RowStyle BackColor="#EFF3FB" />19             <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />20             <SortedAscendingCellStyle BackColor="#F5F7FB" />21             <SortedAscendingHeaderStyle BackColor="#6D95E1" />22             <SortedDescendingCellStyle BackColor="#E9EBEF" />23             <SortedDescendingHeaderStyle BackColor="#4870BE" />24         </asp:GridView>25     </div>

View Code

      Default.aspx.cs中的代码如下:

必发88手机版 40必发88手机版 41

 1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.SqlClient; 5 using System.Linq; 6 using System.Web; 7 using System.Web.Configuration; 8 using System.Web.UI; 9 using System.Web.UI.WebControls;10 11 namespace WebApplication112 {13     public partial class Default : System.Web.UI.Page14     {15         protected void Page_Load(object sender, EventArgs e)16         {17         }18 19         protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)20         {21             string ID = this.GridView1.SelectedRow.Cells[1].Text.ToString();//获取选取行的索引22             Response.Redirect("Form1.aspx?stuNo="   ID);23         }24     }25 }

View Code

      

      在From1.aspx中添加如下代码:

必发88手机版 42必发88手机版 43

 1     <div> 2         <asp:Label ID="Label1" runat="server" Text="选取的学生信息:" /> 3         <br /> 4         <asp:Label ID="Label2" runat="server" /> 5         <br /> 6         <asp:Label ID="Label3" runat="server" /> 7         <br /> 8         <asp:Label ID="Label4" runat="server" /> 9         <br />10         <asp:Label ID="Label5" runat="server" />11     </div>

View Code

      Form1.aspx.cs中的代码如下:

必发88手机版 44必发88手机版 45

 1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.SqlClient; 5 using System.Linq; 6 using System.Web; 7 using System.Web.Configuration; 8 using System.Web.UI; 9 using System.Web.UI.WebControls;10 11 namespace WebApplication112 {13     public partial class Form1 : System.Web.UI.Page14     {15         string connectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;16         protected void Page_Load(object sender, EventArgs e)17         {18             SqlConnection connection = new SqlConnection(connectionString);19             try20             {21                 string stuNo = Request.QueryString["stuNo"].ToString();22                 string selectSql = "select * from Student where stuNo="   stuNo;23                 SqlCommand command = new SqlCommand(selectSql, connection);24                 SqlDataAdapter dataAdapter = new SqlDataAdapter;25                 DataSet dataSet = new DataSet();26                 connection.Open();27                 dataAdapter.Fill(dataSet, "Student");28                 this.Label2.Text = "学号:"   dataSet.Tables["Student"].Rows[0]["stuNo"].ToString();29                 this.Label3.Text = "班级:"   dataSet.Tables["Student"].Rows[0]["Class"].ToString();30                 this.Label4.Text = "姓名:"   dataSet.Tables["Student"].Rows[0]["stuName"].ToString();31                 this.Label5.Text = "年龄:"   dataSet.Tables["Student"].Rows[0]["Age"].ToString();32             }33             catch (Exception ex)34             {35                 Response.Write("读取错误:"   ex.Message.ToString;36             }37             finally38             {39                 connection.Close();40             }41         }42     }43 }

View Code

  GridView控件的数据操作

    当GridView控件把数据显示到页面时,可能需要对数据进行修改、删除的操作。GridView控件通过内置的属性来提供这些操作界面,而实际的数据操作则通过数据源控件或ADO.NET来实现。启动GridView控件的删除修改功能的方式如下:

      1.将AutoGenerateEditButton属性设置为true,可以启动修改功能;将AutoGenerateDeleteButton属性设置为true,可以启动删除功能。

      2.添加一个CommandField列,将其ShowEditButton属性设置为true来启动修改功能,将其属性ShowDeleteButton属性设置为true来启动删除功能。

      3.创建一个TemplateField,其中ItemTemplate包含多个命令按钮,要进行更新时将CommandName设置为Edit,要进行删除时将CommandName设置为Delete。

    当启用GridView控件的删除或修改功能时,GridView控件会显示一个能够让用户编辑或删除各行的用户界面:一般情况下,会在一列或多列中显示按钮或链接,       用户通过单击按钮或链接把所在的行置于可编辑的模式下或直接把行删除。

    在处理更改和删除GridView控件数据的实际操作时,有如下两种选择:

      1.使用数据源控件。用户保存更改时,GridView控件将更改和主键信息传递到由DataSourceID属性标识的数据源控件,从而调用适当的更新操作。

      2.在事件处理程序中使用ADO.NET方法编写自动的更新或删除代码。用户保存更改时,将触发事件RowUpdated,在该事件处理程序中获得更改后数据,然后使用ADO.NET方法调用Update语句把数据更新。用户删除行时,将触发事件RowDeleted,在事件处理程序中获得要删除行的数据的主键,然后使用ADO.NET方法调用Delete语句把数据更新。

    在事件处理程序中是根据三个字典集来获得GridView控件的传递数据的,三个字典集合分别是:Keys、NewValues、OldValues。Keys字典包含字段的名称和值,通过它们唯一的标识将要更新或删除的记录,并始终包含键字段的原始值。NewValues字典包含正在编辑的行中的输入控件的当前值。OldValues字典包含除键字段以外的任何字段的原始值,键字段放在Keys字典中。

    使用自动生成的删除列和更新列:

      在Web.config文件中添加如下代码:

必发88手机版 46必发88手机版 47

1   <connectionStrings>2     <add name="ConnectionString" connectionString="Data Source=追风的蜗牛;Initial Catalog=Student;Integrated Security=True"/>3   </connectionStrings>

View Code

      在Default.aspx中添加如下代码:

必发88手机版 48必发88手机版 49

 1     <div> 2         <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:ConnectionString %>" 3              ProviderName="System.Data.SqlClient" DataSourceMode="DataReader" SelectCommand="select * from Student" 4              UpdateCommand="update Student set stuNo=@stuNo,Class=@Class,stuName=@stuName,Age=@Age where stuNo=@stuNo" 5              DeleteCommand="delete from Student Where stuNo=@stuNo"> 6             <UpdateParameters> 7                 <asp:Parameter Name="Class" Type="String" /> 8                 <asp:Parameter Name="stuName" Type="String" /> 9                 <asp:Parameter Name="Age" Type="String" />10                 <asp:Parameter Name="stuNo" Type="String" DefaultValue="007" />11             </UpdateParameters>12             <DeleteParameters>13                 <asp:Parameter Name="stuNo" Type="String" DefaultValue="007" />14             </DeleteParameters>15         </asp:SqlDataSource>16         <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="False" DataKeyNames="stuNo"17              OnRowDeleted="GridView1_RowDeleted" OnRowUpdated="GridView1_RowUpdated"18              AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" CellPadding="4" ForeColor="#333333" GridLines="None">19             <AlternatingRowStyle BackColor="White" />20             <Columns>21                 <asp:BoundField DataField="stuNo" HeaderText="学号" ReadOnly="True" />22                 <asp:BoundField DataField="Class" HeaderText="班级" />23                 <asp:BoundField DataField="stuName" HeaderText="姓名" />24                 <asp:BoundField DataField="Age" HeaderText="年龄" />25             </Columns>26             <EditRowStyle BackColor="#7C6F57" />27             <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />28             <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />29             <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />30             <RowStyle BackColor="#E3EAEB" />31             <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />32             <SortedAscendingCellStyle BackColor="#F8FAFA" />33             <SortedAscendingHeaderStyle BackColor="#246B61" />34             <SortedDescendingCellStyle BackColor="#D4DFE1" />35             <SortedDescendingHeaderStyle BackColor="#15524A" />36         </asp:GridView>37     </div>

View Code

      Default.aspx.cs中的代码如下:

必发88手机版 50必发88手机版 51

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7  8 namespace WebApplication2 9 {10     public partial class Default : System.Web.UI.Page11     {12         protected void Page_Load(object sender, EventArgs e)13         {14 15         }16 17         protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)18         {19             this.GridView1.DataBind();20         }21 22         protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)23         {24             this.GridView1.DataBind();25         }26     }27 }

View Code

    使用CommandField删除列和更新列:

      在Web.config文件中添加如下代码:

必发88手机版 52必发88手机版 53

1   <connectionStrings>2     <add name="ConnectionString" connectionString="Data Source=追风的蜗牛;Initial Catalog=Student;Integrated Security=True"/>3   </connectionStrings>

View Code

      在Default.aspx中添加如下代码:

必发88手机版 54必发88手机版 55

 1     <div> 2         <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:ConnectionString %>" 3              ProviderName="System.Data.SqlClient" DataSourceMode="DataReader" SelectCommand="select * from Student" 4              UpdateCommand="update Student set stuNo=@stuNo,Class=@Class,stuName=@stuName,Age=@Age where stuNo=@stuNo" 5              DeleteCommand="delete from Student Where stuNo=@stuNo"> 6             <UpdateParameters> 7                 <asp:Parameter Name="Class" Type="String" /> 8                 <asp:Parameter Name="stuName" Type="String" /> 9                 <asp:Parameter Name="Age" Type="String" />10                 <asp:Parameter Name="stuNo" Type="String" DefaultValue="007" />11             </UpdateParameters>12             <DeleteParameters>13                 <asp:Parameter Name="stuNo" Type="String" DefaultValue="007" />14             </DeleteParameters>15         </asp:SqlDataSource>16         <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="False" DataKeyNames="stuNo"17              OnRowDeleted="GridView1_RowDeleted" OnRowUpdated="GridView1_RowUpdated"18               CellPadding="4" ForeColor="#333333" GridLines="None">19             <AlternatingRowStyle BackColor="White" />20             <Columns>21                 <asp:BoundField DataField="stuNo" HeaderText="学号" ReadOnly="True" />22                 <asp:BoundField DataField="Class" HeaderText="班级" />23                 <asp:BoundField DataField="stuName" HeaderText="姓名" />24                 <asp:BoundField DataField="Age" HeaderText="年龄" />25                 <asp:CommandField ShowDeleteButton="true" ShowEditButton="true" />26             </Columns>27             <EditRowStyle BackColor="#7C6F57" />28             <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />29             <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />30             <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />31             <RowStyle BackColor="#E3EAEB" />32             <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />33             <SortedAscendingCellStyle BackColor="#F8FAFA" />34             <SortedAscendingHeaderStyle BackColor="#246B61" />35             <SortedDescendingCellStyle BackColor="#D4DFE1" />36             <SortedDescendingHeaderStyle BackColor="#15524A" />37         </asp:GridView>38     </div>

View Code

      Default.aspx.cs中的代码如下:

必发88手机版 56必发88手机版 57

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7  8 namespace WebApplication2 9 {10     public partial class Default : System.Web.UI.Page11     {12         protected void Page_Load(object sender, EventArgs e)13         {14 15         }16 17         protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)18         {19             this.GridView1.DataBind();20         }21 22         protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)23         {24             this.GridView1.DataBind();25         }26     }27 }

View Code

DetailsView控件

  DetailsView控件主要用来从与它联系的数据源中一次显示、编辑、插入或删除一条记录。通常,它将与GridView控件一起使用在主/详细方案中,GridView控件用来显示主要的数据目录,而DetailsView控件显示每条数据的详细信息。

  DetailsView控件本身自带了编辑数据的功能,只要把属性AutoGenerateDeleteButton、AutoGenerateInsertButton和AutoGenerateEditButton设置为“true”就可以启用DetailsView控件的编辑数据的功能,当然实际的数据操作过程还是在数据源控件中进行。

  与GridView控件相比,DetailsView控件中支持进行数据的插入操作。

  使用DetailsView控件显示数据:

    在Web.config文件中添加如下代码:

必发88手机版 58必发88手机版 59

1   <connectionStrings>2     <add name="ConnectionString" connectionString="Data Source=追风的蜗牛;Initial Catalog=Student;Integrated Security=True"/>3   </connectionStrings>

View Code

    在Default.aspx中添加如下代码:

必发88手机版 60必发88手机版 61

 1     <div> 2         <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:ConnectionString %>" 3              ProviderName="System.Data.SqlClient" DataSourceMode="DataSet" SelectCommand="select * from Student"> 4         </asp:SqlDataSource> 5         <asp:DetailsView ID="DetailsView1" runat="server" DataSourceID="SqlDataSource1" BackColor="White" BorderColor="#DEDFDE" 6              BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Vertical" AllowPaging="true"> 7             <AlternatingRowStyle BackColor="White" /> 8             <EditRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 9             <FooterStyle BackColor="#CCCC99" />10             <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />11             <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />12             <RowStyle BackColor="#F7F7DE" />13         </asp:DetailsView>14     </div>

View Code

  

  在DetailsView控件中操作数据:

    在Web.config文件中添加如下代码:

必发88手机版 62必发88手机版 63

1   <connectionStrings>2     <add name="ConnectionString" connectionString="Data Source=追风的蜗牛;Initial Catalog=Student;Integrated Security=True"/>3   </connectionStrings>

View Code

    在Default.aspx中添加如下代码:

必发88手机版 64必发88手机版 65

 1     <div> 2         <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:ConnectionString %>" 3              ProviderName="System.Data.SqlClient" DataSourceMode="DataSet" SelectCommand="select * from Student" 4              InsertCommand="insert into Student(stuNo,Class,stuName,Age)  5             values(@stuNo,@Class,@stuName,@Age);select @stuNo=SCOPE_IDENTITY()" 6              UpdateCommand="update Student set stuNo=@stuNo,Class=@Class,stuName=@stuName,Age=@Age" 7              DeleteCommand="delete Student where stuNo=@stuNo"> 8             <InsertParameters> 9                 <asp:Parameter Name="Class" Type="String" />10                 <asp:Parameter Name="stuName" Type="String" />11                 <asp:Parameter Name="Age" Type="Int32" />12                 <asp:Parameter Name="stuNo" Type="String" DefaultValue="009" />13             </InsertParameters>14             <UpdateParameters>15                 <asp:Parameter Name="Class" Type="String" />16                 <asp:Parameter Name="stuName" Type="String" />17                 <asp:Parameter Name="Age" Type="Int32" />18                 <asp:Parameter Name="stuNo" Type="String" DefaultValue="009" />19             </UpdateParameters>20             <DeleteParameters>21                 <asp:Parameter Name="stuNo" Type="String" DefaultValue="009" />22             </DeleteParameters>23         </asp:SqlDataSource>24         <asp:DetailsView ID="DetailsView1" runat="server" DataSourceID="SqlDataSource1" BackColor="White" BorderColor="#DEDFDE"25              BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Vertical" AllowPaging="True"26              AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateInsertButton="True" DataKeyNames="stuNo">27             <AlternatingRowStyle BackColor="White" />28             <EditRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />29             <FooterStyle BackColor="#CCCC99" />30             <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />31             <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />32             <RowStyle BackColor="#F7F7DE" />33         </asp:DetailsView>34     </div>

View Code

ListView控件

  ListView控件可以显示使用数据源控件或ADO.NET获得的数据。

  使用模板和样式定义的格式显示数据。利用ListView控件,可以逐项显示数据,也可以按组显示数据。

  ListView控件的特点:

    1.支持绑定到数据源控件,例如SqlDataSource和ObjectDataSource。

    2.可通过用户定义的模板和样式自定义外观。

    3.内置排序和选择功能。

    4.内置更新、插入和删除功能。

    5.支持通过使用DataPager控件进行分页的功能。

    6.支持以编程方式访问ListView对象模型,从而可以动态设置属性、处理事件。

    7.支持多个键字段。

  支持的模板

    为了使ListView控件显示内容,必须为控件的不同部分创建模板。用户需要根据不同的需求创建相应的模板。

      1.通过创建LayoutTemplate模板,可以定义ListView控件的主要布局。该模板必须包含一个充当数据占位符的控件。这些控件将包含ItemTemplate模板  所定义的每个项的输出。

      2.在ItemTemplate模板中,需要定义各个项的内容。此模板包含的控件通常已绑定到数据列或其他单个数据元素。

      3.使用GroupTemplate模板,可以选择对ListView控件中的项进行分组。对项分组通常是为了创建平铺的表布局。

      4.使用EditItemTemplate模板,可以提供已绑定数据的用户界面,从而使用户可以修改现有的数据项。

      5.使用InsertItemTemplate模板还可以定义已绑定数据的用户界面,以使用户能够添加新的数据项。

    通常需要向模板中添加一些按钮,以允许用户指定要执行的操作。通过设置按钮的CommandName属性,可以定义按钮将执行的操作。

      1.Select:显示所选项的SelectedItemTemplate模板的内容。

      2.Insert:在InsertItemTemplate模板中,将数据绑定控件的内容保存在数据源中。

      3.Edit:把ListView控件切换到编辑模式,并使用EditItemTemplate模板显示项。

      4.Update:在EditItemTemplate模板中,指定应将数据绑定控件的内容保存在数据源中。

      5.Delete:从数据源中删除项。

必发88手机版,      6.Cancel:取消当前操作。

  ListView控件模版的应用:  

    在Web.config文件中添加如下代码:  

必发88手机版 66必发88手机版 67

1   <connectionStrings>2     <add name="ConnectionString" connectionString="Data Source=追风的蜗牛;Initial Catalog=Student;Integrated Security=True"/>3   </connectionStrings>

View Code

    在Default.aspx中添加如下代码:

必发88手机版 68必发88手机版 69

 1     <div> 2         <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ConnectionStrings:ConnectionString %>" 3              ProviderName="System.Data.SqlClient" DataSourceMode="DataReader" SelectCommand="select * from Student"> 4         </asp:SqlDataSource> 5         <asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1"> 6             <LayoutTemplate> 7                 <table runat="server" id="Table1"> 8                     <tr runat="server" id="itemPlaceHolder" /> 9                 </table>10             </LayoutTemplate>11             <ItemTemplate>12                 <tr runat="server">13                     <td id="td1" runat="server">14                         <asp:Label ID="Label1" runat="server" Text='<%#Eval("stuName") %>' />15                     </td>16                 </tr>17             </ItemTemplate>18         </asp:ListView>19     </div>

View Code

Chart控件

  Chart控件是VisualStudio2010中新增的一个图表型控件。

  Chart控件功能非常强大,可实现柱状直方图、曲线走势图、饼状比例图等,甚至可以是混合图表,可以是二维或三维图表,可以带或不带坐标系,可以自由配置各条目的颜色、字体等等。

  Chart控件的主要组成部分:

    1.Annotation:图形注解集合,它是对图形的以下注解对象的集合,注解对象类似于对某个点的详细或批注的说明。

    2.CharAreas:图表区域集合,图表的绘制区。Chart控件不限制CharAreas绘图区域的添加个数,对于每一个CharAreas绘图区域可以设置各自的属性。绘图区域只是一个可以绘图的区域范围,本身并不包括各种属性数据。

    3.Legends:图例集合,标注图形中各个线条或颜色的含义,同样,一个图片也可以包含多个图例说明,分别说明各个绘图区域的信息。

    4.Series:图标序列集合,图标序列就是实际的绘图绘图数据区域,实际呈现的图形形状就是由此集合中的每个图表来构成的,可以往集合里添加多个图表,每个图表都可以有自己的绘制形状、样式、独立的数据等。每个图表可以指定它的绘图区域,让图标呈现在某个绘图区域,也可以让几个图表在同一个绘图区域叠加。

    5.Titles:图表标题集合,用于图表标题的设置,可以添加多个标题,设置标题的属性。

  对于简单的图表,用默认的样式就可以了,不用对ChartArea进行太多的修改,只要在<asp:Series>中添加数据点。数据点被包含在<Points>和</Points>标签中,使用<asp:DataPoint/>来定义。数据点有以下几个重要的属性:

    1.AxisLabel:获取或设置为数据列或空点的X轴标签文本。此属性仅在自定义标签尚未就有关Axis对象指定时使用。

    2.XValue:设置或获取一个图表上数据点的X坐标值。

    3.YValues:设置或获取一个图表中数据点的Y坐标值。

本文由必发88手机版发布,转载请注明来源:NET数据控件