对分页说法的不同,手动指定
分类:web前端

ObjectDataSource 中若要启用分页,则指定属性 EnablePaging 为 true;

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标签下的代码好像是这样

图片 1图片 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运行,您将看到以下页面

图片 3

使用TemplateField显示数据

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

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

图片 4图片 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

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

图片 6图片 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,运行,如果一切正常,您应该看到如下页面

图片 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建表

图片 9图片 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.在“文件”菜单中,指向“新建”,选择“网站”。

图片 11

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

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

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

图片 12

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

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

图片 13图片 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全选,删除系统生成代码,替换为以下代码:

图片 15图片 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启动运行,如果一切顺利,您讲看到以下页面:

图片 17

在 ObjectDataSource 中,利用 startRowIndex、maximumRows 这两个参数可以自动分页。

  • 声明式数据绑定教程-SqlDataSource 与 GridView
  • 声明式数据绑定教程-SqlDataSource 与 GridView 高级
  • 声明式数据绑定教程-GridView 模板
  • 声明式数据绑定教程-GridView 空内容模板
  • 声明式数据绑定教程-GridView 模板2
  • 声明式数据绑定教程-GridView 模板3
  • 声明式数据绑定教程-DetailsView
  • 声明式数据绑定教程-ObjectDataSource

GridView 中若要启用分页,则指定属性 AllowPaging 为 true。

这两个参数的名字是固定的,除非指定 StartRowIndexParameterName、MaximumRowsParameterName 来改变他们。


一个是 EnablePaging,一个是 AllowPaging,可能微软认为 ObjectDataSource 分页是一种主动的,所以叫 Enable,而 GridView 作为显示控件应该是被动的接受与否,所以叫 Allow。关于这一点,我认为声明式数据绑定教程-ObjectDataSource 这篇文章可以验证。

大多数情况下,这两个参数的值都不用我们操心,因为它是自动来源于关联的显示控件,比如 GridView,但有时候,我们想自己去指定。

连接字符串

实际上手动指定时,我们完全可以取其他的名字,甚至要把它当作一般参数来看待。

SqlDataSource 的连接字符串可以写在 web.config 中,关于此应用,请参见 ASP.NET 中读取数据库连接字符串。

比如我把 ObjectDataSource 和 GridView 作为一个用户控件,然后使用这个控件时,通过指定参数来传输这两个参数的值。

示例

其实很简单,唯一要说明的就是此时由于是手动指定了,我们就不要将 ObjectDataSource 的 EnablePaging 设为 true 了,让其使用默认值 false 就可以了。

web.config 中:

public int StartRowIndex
{
    set
    {
        ObjectDataSource1.SelectParameters["startRowIndex"] = new Parameter("startRowIndex", System.Data.DbType.Int32, value.ToString());
    }
}

<connectionStrings>
  <add name="MySqlServer" connectionString="Data Source=(local);Initial Catalog=news;Persist Security Info=False;User ID=news;Password=news;" providerName="System.Data.SqlClient"/>
<connectionStrings>

public int MaximumRows
{
    set
    {
        ObjectDataSource1.SelectParameters["maximumRows"] = new Parameter("maximumRows", System.Data.DbType.Int32, value.ToString());
    }
}

页面中:

以上代码放在用户控件的类中,调用控件时就可以直接指定这两个参数了。

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:MySqlServer %>"
    SelectCommand="select * from cftea_docs">
</asp:SqlDataSource>

GridView 的分页

可以轻松为 GridView 设置分页,AllowPaging 获得或设置是否分页,PageSize 获得或设置页大小,PageIndex 获得或设置当前页索引,PagerSettings-Mode 获得或设置分页样式……

要说明的是,虽然只需要将 AllowPaing 设置为 true 就会自动分页,但 GridView 是把 SqlDataSource 提供给它的数据拿来进行分页的,也就是说要实现分页是从数据库中取出所有的数据,然后再交给 GridView 分页,如果数据量大的话,这将是一个非常影响性能的操作,要解决此问题,就需要按需来取,即需要哪页的数据,数据源控件就只从数据库中查询那页的数据并提交给 GridView,这就需要 ObjectDataSource,如果 GridView 与 ObjectDataSource 搭配进行分页,则分页不是由 GridView 来完成的,而是由 ObjectDataSource 来完成,GridView 只向 ObjectDataSource 提供一些分页的数据,ObjectDataSource 的应用将在后面中介绍到。

增加“编辑”、“删除”功能

第一步,为 GridView 增加“主键”,为 GridView 指定 DataKeyNames="id",我们这里只指定一个字段,如果要指定多个字段,则多个字段之间用“,”隔开。

第二步,为 GridView 增加“编辑”、“删除”按钮,只需要为 GridView 指定 AutoGenerateEditButton="true" AutoGenerateDeleteButton="true"。

第三步,为 SqlDataSource 指定相应的更新、删除方法。

UpdateCommand="update cftea_docs set title=@title, content=@content where id=@id"
DeleteCommand="delete from cftea_docs where id=@id"

“编辑”、“删除”就实现了,唯一的不足就是“删除”没有提示,这个我们也将在后面解决。

SqlDataSource 的参数

SQL 中的参数(以 @ 开头)都是与 GridView 字段对应,我们可不可以指定额外一些参数,使得这些参数即使不与 GridView 字段对应也可以使用呢?答案是可以。

我们可以利用编程的方式通过 SqlDataSource 的 SelectParameters、InsertParameters、UpdateParameters、DeleteParameters 等属性来设定。

我们也可以通过声明的方式来设定,以下示例设定了一个 SelectCommand 使用的参数,该参数自动从 QueryString 中取值。

    <SelectParameters>
        <asp:QueryStringParameter Name="categoryId" Type="Int32" QueryStringField="categoryId" />
    </SelectParameters>

  • 声明式数据绑定教程-SqlDataSource 与 GridView
  • 声明式数据绑定教程-SqlDataSource 与 GridView 高级
  • 声明式数据绑定教程-GridView 模板
  • 声明式数据绑定教程-GridView 空内容模板
  • 声明式数据绑定教程-GridView 模板2
  • 声明式数据绑定教程-GridView 模板3
  • 声明式数据绑定教程-DetailsView
  • 声明式数据绑定教程-ObjectDataSource

本文由10bet手机官网发布于web前端,转载请注明出处:对分页说法的不同,手动指定

上一篇:NET查询和访问数据库,Winform基础程序和ADO 下一篇:没有了
猜你喜欢
热门排行
精彩图文