`
water84222
  • 浏览: 368076 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

为 ASP.NET Datagrid创建自定义列

阅读更多
Marcie Robillard
DatagridGirl.com

2003 年 9 月

摘要:ASP.NET Datagrid 是 Web 开发人员可以使用的一个功能强大的控件。通过添加自定义列以便为用户更准确地显示数据,来学习如何增强该控件的功能。(本文包含一些指向英文站点的链接。)

适用于:
    Microsoft® ASP.NET

下载本文的源代码。(请注意,在示例文件中,程序员的注释使用的是英文,本文中将其译为中文是为了便于读者理解。)

目录

简介
重复使用的情况
DropDownList 方案
内置的 Datagrid 列
传统方法:TemplateColumn 中的 DropDownList
所有列的基础:DataGridColumn
可以重复使用的方法:创建 DropDownColumn
使用 DropDownColumn

小结

简介

不得不承认,为 Microsoft® ASP.NET 编写 Datagrid 代码包括大量的重复工作。尽管我深受该控件的困扰,但我还是不断寻找简化这类任务的捷径。谁都不愿意做重复的工作,对不对?为了摆脱这种烦人的工作,我们要将多个项目中的重复代码封装到一个可重复使用的程序包中。这才是面向对象的编程工作所要解决的问题,使用 Datagrid 也不例外。对于 Datagrid 控件来说,要实现该目的,需要将常用的代码放到一个内置的列类型中(将在第一个示例中使用),然后创建一个可以在多个 Datagrid 对象中重复使用的自定义列类型。

本文介绍使用标准 TemplateColumn 在一个 Datagrid 列中使用 DropDownList 控件的过程,然后将该逻辑转换为您的自定义 Datagrid 列类型,我称其为 DropDownColumn。已经为您创建了一些免费的 Datagrid 列,您可以到 MetaBuilders.com 下载所需的类型。

重复使用的情况

如果您的小组与许多组织一样,已经将业务逻辑和/或数据访问逻辑分成单独的组件或组件集,而剩下的 ASP.NET 文件、ASPX 及其代码只包含纯粹的表示逻辑。(“纯粹”是一个相对的词语。)但是,即使是表示层的逻辑有时也会重复使用,这样,下次某个用户来到您门前说,“我想让我的应用程序在‘财务’方面看起来与苏茜的一样”时,您可以重复使用“财务”应用程序的部分表示内容快速为其构建一个这样的应用程序。您可能还想将一些逻辑打包,在 Web 上销售或在您的 Web 站点分发。ASP.NET 使这一切比以往更容易实现,因为它使您可以创建自己的服务器控件,或从现有的类型导出列类型,从而获得所需的功能。

DropDownList 方案

假设您正在本地 Microsoft SQL Server™ 中编辑 Northwind 数据库(或做其他工作),您想使您的用户(我们称之为 Ed,仓库保管员)可以编辑 Orders 表。其中一个字段包含运输信息 (ShipVia),Ed 要能够修改该字段的信息。在显示模式下,运输公司应显示为纯文本。当 Ed 单击 Edit(编辑)按钮时,您不光要为他提供一个 TextBox 以编辑运输方式代码(1、2 或 3),还要为他提供一个包含可以选择不同运输公司的 DropDownList。(因为 Ed 记不住哪个运输公司对应哪个号码,所以,DropDownList 方案可以帮助他解决这个问题。)

图 1:选择运输公司

内置的 Datagrid 列

了解问题的大概情况后,现在我们后退一步,看一下 ASP.NET 中构建的 5 种 Datagrid 列类型及其父类型 DataGridColumn

注意:直接使用这些列类型之前,请关闭 AutoGenerateColumns(运行时自动生成列)。然后,您可以在属性生成器中使用这些列类型,或者直接在 ASPX 文件的 HTML 代码中使用。

图 2:从 DataGridColumn 中继承的 5 种内置列

尽管这些列类型非常有用,它们不过是了解 Datagrid 列内容的开始。

传统方法:TemplateColumn 中的 DropDownList

在研究如何创建新列类型之前,首先让我们看一下如何通过直接在 TemplateColumn 内使用 DropDownList 解决下拉列表的问题,而不用自定义列。ItemTemplate 将只包含表示当前值的纯文本表示,而 EditItemTemplate 包含一个需要在运行时管理的 <asp:DropDownList> 控件。

<asp:DataGrid id="DataGrid1"    runat="server" CssClass="grid"    AutoGenerateColumns="False">   <Columns>      <asp:EditCommandColumn          EditText="Edit" CancelText="Cancel"          UpdateText="Update" />      <asp:BoundColumn          DataField="OrderID" ReadOnly="True"          HeaderText="Order ID" />      <asp:BoundColumn          DataField="ShipName" HeaderText="Ship to"          ReadOnly="True" />      <asp:BoundColumn          DataField="ShipCountry" HeaderText="Country"          ReadOnly="True" />      <asp:TemplateColumn HeaderText="Ship Method">         <ItemTemplate>            <%#Container.DataItem("ShipVia")%>         </ItemTemplate>         <EditItemTemplate>            <asp:DropDownList runat="server" ID="Dropdownlist1"/>         </EditItemTemplate>      </asp:TemplateColumn>   </Columns></asp:DataGrid>

绑定 Datagrid 的代码:

Sub BindGrid()    Dim SQL As String = "SELECT OrderID,       ShipName, ShipCountry, ShipVia FROM Orders"    Dim DA As SqlDataAdapter = New SqlDataAdapter(SQL, ConnStr)    Dim DS As New DataSet    DA.Fill(DS, "Orders")    DataGrid1.DataSource = DS.Tables("Orders").DefaultView    DataGrid1.DataBind()End Sub

当前编辑的项目是在触发 DatagridItemDataBound 事件时绑定到 DropDownList 的。使用 ItemDataBound 事件时,请检查当前项目的 ListItemType,否则您可能会发现您正在使用 HeaderItem 或其他不适用的项目类型。为 EditItem 引用 DropDownList 控件。在下面的代码中,我直接使用单元格控件集进行说明(为了与后面的示例保持一致),但是,您可以采用简单的方法,直接为 DropDownList 控件指定 ID,并使用 Datagrid 项目的 FindControl 方法定位控件引用。由于 Datagrid 被绑定到 DataTable 的默认视图,而该视图的元素属于 DataRowView 类型,所以您可以将当前项目的 DataItem 属性转换为一个 DataRowView 实例。这样,您可以按字段名直接引用 DataItem 中的字段。使用这种方法,将“ShipVia”的当前值保存到该记录中,并使用它选择相应的下拉列表项。

Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, _    ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) _       Handles DataGrid1.ItemDataBound    If e.Item.ItemType = ListItemType.EditItem Then        Dim DRV As DataRowView = CType(e.Item.DataItem, DataRowView)        Dim CurrentShip As String = DRV("ShipVia")        Dim DDL As DropDownList = _      CType(e.Item.Cells(4).Controls(1), DropDownList)        Dim SQL As String = _      "SELECT ShipperID, CompanyName FROM Shippers ORDER BY ShipperID"        Dim DA As SqlDataAdapter = New SqlDataAdapter(SQL, ConnStr)        Dim DS As New DataSet        Dim item As ListItem        DA.Fill(DS, "Shippers")        DDL.DataSource = DS.Tables("Shippers").DefaultView        DDL.DataTextField = "CompanyName"        DDL.DataValueField = "ShipperID"        DDL.DataBind()        item = DDL.Items.FindByValue(CurrentShip)        If Not item Is Nothing Then item.Selected = True    End IfEnd Sub

最后,编写从 DropDownList 中检索当前选定值的代码,并执行数据库更新:

Private Sub DataGrid1_UpdateCommand(ByVal source As Object, _   ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) _   Handles DataGrid1.UpdateCommand    Dim DDL As DropDownList = _      CType(e.Item.Cells(4).Controls(1), DropDownList)    Dim NewShip As Integer = DDL.SelectedValue    Dim OrderID As Integer = Int32.Parse(e.Item.Cells(1).Text)    Dim SQL As String = _      "UPDATE Orders SET ShipVia=@Ship WHERE OrderID=@ID"    Dim Conn As SqlConnection = New SqlConnection(ConnStr)    Dim Cmd As New SqlCommand(SQL, Conn)    Cmd.Parameters.Add(New SqlParameter("@Ship", NewShip))    Cmd.Parameters.Add(New SqlParameter("@ID", OrderID))    Conn.Open()    Cmd.ExecuteNonQuery()    Conn.Close()    DataGrid1.EditItemIndex = -1    BindGrid()End Sub

所有列的基础:DataGridColumn

我们回顾一下所有内置列类型的父类型 DataGridColumn。(参见图 1。)它包含所有 Datagrid 列中常用的属性和方法。带星号的类型表示您创建自定义列类型时要使用的类型。

DataGridColumn 属性

DataGridColumn 方法

可重复使用的方法:创建 DropDownColumn

首先要在 Microsoft® Visual Studio® .NET 中创建一个新类库,并将其命名为 MyCustomColumn。添加一个新类 DropDownColumn,并确保在您的类定义中添加命名空间,这样您的初始代码应如下所示:

Namespace MyCustomColumn    Public Class DropDownColumn        Inherits DataGridColumn        Public DataSource As ICollection        Public DataField As String        Public DataTextField As String        Public DataValueField As String    End ClassEnd Namespace

我还声明了 4 个公共属性,如下所示:

接下来,覆盖 InitializeCell,它是 Datagrid 列的一个固有事件。列中的所有单元格都将发生 InitializeCell,它与直接使用 Datagrid 时的 ItemCreated 事件非常相似。您可以使用它来管理单元格内容,例如设置 HeaderText,添加您将向其中添加数据的 DropDownList 控件。我已经为单元格的 DataBinding 事件添加了处理程序,需要根据当前是否正在编辑行来采取不同的处理方式。每个 System.Web.UI.Control 都有一个 DataBinding 事件,当数据被绑定到控件时,您可以从这里访问底层的数据,本例中为 Datagrid 中的 TableCell 对象。

Public Overrides Sub InitializeCell(ByVal cell As TableCell, _   ByVal columnIndex As Integer, _   ByVal itemType As ListItemType)       MyBase.InitializeCell(cell, columnIndex, itemType)       Select Case itemType              Case ListItemType.Header                   cell.Text = HeaderText              Case ListItemType.Item, ListItemType.AlternatingItem                   AddHandler cell.DataBinding, AddressOf ItemDataBinding              Case ListItemType.EditItem                   AddHandler cell.DataBinding, AddressOf EditItemDataBinding                   Dim DDL As New DropDownList                   cell.Controls.Add(DDL)            End Select        End Sub

接下来是 ItemDataBinding 例程,当对 Datagrid 中的 Item 或 AlternatingItem 进行数据时,将触发该例程。您需要引用回正在绑定的 TableCell,可以直接转换传递给事件的“发送者”对象,再使用 TableCellNamingContainer 属性引用当前的 DataGridItem。这里只能以纯文本格式显示 DataField 的内容,就象显示在 BoundColumn 中一样。最后,如果用户指定的字段不存在,我将为用户显示更友好的错误信息,而不是仅仅显示“索引超出范围”这样的一般信息。

Private Sub ItemDataBinding(ByVal sender As Object, ByVal e As EventArgs)     Dim cell As TableCell = CType(sender, TableCell)     Dim DGI As DataGridItem = CType(cell.NamingContainer, DataGridItem)     Try          cell.Text = DGI.DataItem(DataField)     Catch RangeEx As IndexOutOfRangeException          Throw New Exception("Specified DataField was not found.")     Catch OtherEx As Exception          Throw New Exception(OtherEx.InnerException.ToString)     End Try End Sub 

下一步,编写 EditItemDataBinding 事件的代码,当某个行进入“编辑”模式时,将在我们的自定义列单元格上触发该事件。再次引用当前单元格并在调用 InitializeCell 方法时插入 DropDownList 控件。在 DropDownList 中添加一个空项目作为第一个选项,如果列中的当前数据与您从 DataSource 集合中选择并放在列表中的任何项目都不匹配,则选择该选项。

然后,需要确定所传入集合的类型。在本例中,我将处理两种情况:通过 ArrayList 传递一组字符串,或者数据表中的 DataView,它由 DataRowView 项目构成。对于字符串数据,我将输入一个新的 ListItem,并设置下拉项的值和文本。由于这两种情况是相同的,所以这里只需要文本。但是我将选择相应的项目来根据值作出选择,以便与下一个示例保持一致,下一个示例将设置一个单独的值属性。对于 DataRowView 项目,上一个示例中已指出,DataRowViewInstance("FieldName") 返回一个表示该字段中的数据的对象。可以使用同样的方法检索 DataTextFieldDataValueFields 需要的值。

最后,抛出一些异常以处理开发人员使用列时遇到的常见错误,例如向 DataField 属性发送无效字段名,或传入不兼容的 DataSource 类型。我已经对要弹出的异常消息进行了硬编码,但希望您在实际的应用程序中将这些消息保存到更容易配置的位置。例如,如果您希望在全球范围内使用您的应用程序,则可以保存到您的 web.config 文件或资源文件中。同样,您不一定非要再次抛出“未找到指定的 DataField”异常,因为在 Datagrid 被置于“编辑”模式之前可能已经在 ItemDataBinding 事件中捕获了该异常。

Private Sub EditItemDataBinding(ByVal sender As Object, _ByVal e As EventArgs)            Dim cell As TableCell = CType(sender, TableCell)            Dim DDL As DropDownList = _CType(cell.Controls(0), DropDownList)            Dim DataSourceItem As Object            Dim item As ListItem            Dim DGI As DataGridItem            '首先添加一个空选项            DDL.Items.Add(New ListItem(""))            For Each DataSourceItem In DataSource                Select Case DataSourceItem.GetType.ToString                    Case "System.String" '应用到 ArrayList 示例                        item = New ListItem(DataSourceItem, DataSourceItem)                        DDL.Items.Add(item)                    Case "System.Data.DataRowView"                        Dim DRV As DataRowView = _                           CType(DataSourceItem, DataRowView)                        item = New_              ListItem(DRV(DataTextField), DRV(DataValueField))                        DDL.Items.Add(item)                    Case Else                        Throw New Exception("Invalid DataSource type.")                End Select            Next            Try                DGI = CType(cell.NamingContainer, DataGridItem)                item = DDL.Items.FindByValue(DGI.DataItem(DataField))            Catch RangeEx As IndexOutOfRangeException                Throw New Exception("Specified DataField was not found.")            Catch OtherEx As Exception                Throw New Exception(OtherEx.InnerException.ToString)            End Try            If Not item Is Nothing Then item.Selected = TrueEnd Sub

使用 DropDownColumn

以上是创建 DropDownColumn 类所需的所有代码,下面我们看一看如何在应用程序中使用该控件。如果您是在家中学习,而且还没有开始做,请将上面创建的命名空间编译到 MyCustomColumn.dll 中,并将其复制到您想试验的应用程序的 /bin 文件夹中。本例中,我创建一个新的 Web 应用程序 UseCustomColumn,并在我的 /bin 目录的 MyCustomColumn.dll 中添加一个引用。在 ASPX 文件的顶部,添加 @Register 指令:

<%@ Register TagPrefix="dgg"       Namespace="MyCustomColumn"       Assembly="MyCustomColumn" %>

请注意,新的 Datagrid 列类型不会为 Datagrid 出现在 Visual Studio .NET 属性生成器中,因此您需要进入 HTML 视图并在其中添加列声明。确保 Datagrid 声明位于一组 <form runat="server">...</form> 标记之中,这些标记用于处理 PostBack。ASPX 文件的其余部分应如下所示:

<%@ Page Language="vb"    AutoEventWireup="false"    Codebehind="WebForm1.aspx.vb"    Inherits="UseCustomColumn.WebForm1" Trace="False" Debug="True"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>   <HEAD>      <title>WebForm1</title>      <LINK rel="stylesheet" type="text/css" href="Styles.css">      <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">      <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">      <meta name="vs_defaultClientScript" content="javascript">      <meta name="vs_targetSchema"          content="http://schemas.microsoft.com/intellisense/ie5">   </HEAD>   <body>   <form id="Form1" method="post" runat="server">   <asp:DataGrid id="DataGrid1"       runat="server" CssClass="grid"       AutoGenerateColumns="False">      <Columns>         <asp:EditCommandColumn             EditText="Edit" CancelText="Cancel"             UpdateText="Update" />         <asp:BoundColumn             DataField="OrderID"             ReadOnly="True"             HeaderText="Order ID"/>         <asp:BoundColumn             DataField="ShipName"             HeaderText="Ship to"             ReadOnly="True"/>         <asp:BoundColumn             DataField="ShipCountry"             HeaderText="Country"             ReadOnly="True"/>          <dgg:DropDownColumn DataField="ShipVia" HeaderText="Ship Method" />      </Columns>   </asp:DataGrid>   </form>   </body></HTML>

Datagrid 被绑定到 Northwind 示例的 Orders 表,自定义 DropDownColumn 被绑定到 ShipVia 列。现在我只设置 DataField 属性,因为刚刚绑定到一个简单的 ArrayList,不需要 DataTextFieldDataValueField 属性。如果您有预定义的常数列表或者您需要一个快速设置选项的方法,ArrayList 选项最简单。DropDownColumnDataSource 在代码中设置,首先引用 DropDownColumn

Dim DDC As MyCustomColumn.DropDownColumnDDC = CType(DataGrid1.Columns(4), MyCustomColumn.DropDownColumn) Dim AL As New ArrayList AL.Add("Shipping Company A") AL.Add("Shipping Company B") AL.Add("Shipping Company C") DDC.DataSource = AL

下面是运行此代码的结果:

图 3:使用 ArrayList

接下来,我需要转换该示例以便使用数据库中的活动表。ShipVia 是查找表 Shippers 的外键,我在代码中将其指定为 DropDownColumnDataSource。我还需要改变 DropDownColumn 声明,以包括与 Shippers 表中的相应字段匹配的 DataTextFieldDataValueField 名称:

<dgg:DropDownColumn    DataField="ShipVia"    DataTextField="CompanyName"    DataValueField="ShipperID" HeaderText="Ship Method" />

然后将两个 Orders 表绑定到 Datagrid,将 Shippers 表绑定到自定义列:

     Dim SQL As String =      "SELECT OrderID, ShipName, ShipCountry, ShipVia FROM Orders"        Dim DA As SqlDataAdapter = New SqlDataAdapter(SQL, ConnStr)        Dim DS As New DataSet        DA.Fill(DS, "Orders")        'Dim Cmd As SqlCommand = New SqlCommand(SQL, Conn)        'Conn.Open()        'DataGrid1.DataSource = _      Cmd.ExecuteReader(CommandBehavior.CloseConnection)        DataGrid1.DataSource = DS.Tables("Orders").DefaultView        SQL = "SELECT ShipperID, CompanyName " & _            "FROM Shippers ORDER BY ShipperID"        DA.SelectCommand.CommandText = SQL        DA.Fill(DS, "Shippers")        DDC.DataSource = DS.Tables("Shippers").DefaultView        DataGrid1.DataBind()

DataGridColumn 使用活动数据,根据 Orders 表中的值(1、2 或 3)自动选择正确的项目,如下所示:

图 4:从数据库中检索数据

使用 DropDownColumn 的最后一步是检索选定的值以传递回数据库更新。为此,只需在单元格内引用 DropDownList 控件,并确定其 SelectedValue 属性:

 Private Sub DataGrid1_UpdateCommand( _   ByVal source As Object, _   ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) _   Handles DataGrid1.UpdateCommand        Dim CustomDDL As DropDownList = _CType(e.Item.Cells(4).Controls(0), DropDownList)        Dim NewShip As Integer = CustomDDL.SelectedValue        Dim OrderID As Integer = Int32.Parse(e.Item.Cells(1).Text)        Dim SQL As String = _         "UPDATE Orders SET ShipVia=@Ship WHERE OrderID=@ID"        Dim Conn As SqlConnection = New SqlConnection(ConnStr)        Dim Cmd As New SqlCommand(SQL, Conn)        Cmd.Parameters.Add(New SqlParameter("@Ship", NewShip))        Cmd.Parameters.Add(New SqlParameter("@ID", OrderID))        Conn.Open()        Cmd.ExecuteNonQuery()        Conn.Close()        DataGrid1.EditItemIndex = -1        BindGrid()    End Sub

小结

上文概述了如何以 DataGridColumn 为父类型创建一个新类型、如何进行数据绑定以及如何将其应用到实际应用程序中。这只是可重复使用的 Datagrid 列的一个示例,因此,您需要检查您自己的应用程序,以确定哪些重复的功能可以封装到其自己的自定义 Datagrid 列中。您可以开发自己的列,以解决常见问题(例如,在列中显示 DropDownList),或满足您公司的特殊需要。您也不必拘泥于本文的示例,只在自定义列中包含一个 ASP.NET 控件,您可以编写更复杂的结构,例如将一系列控件、第三方内容或整个 Datagrid 控件嵌套到列中,以表现多层信息。总之,您可以充分发挥您的想象力。

5 个内置的列类型非常有用,它们可以满足使用 Datagrid 控件进行显示的大多数情况下的需要。现在并没有开发您自己的控件,只是将一些有意义的内容随便放到 TemplateColumn 中。创建自定义列使您可以突破这些限制,在您的 Datagrid 应用程序中添加丰富的功能。

作者简介

“Datagrid 女孩”Marcie Robillard 是 Microsoft 最优秀的 ASP.NET 专家,她是一位独立的 ASP.NET 顾问和培训师。ASP.NET Datagrid 是她的专业,她还专门为此创建了一个 Web 站点 DatagridGirl.com。您可以从该站点找到优秀 Datagrid 文章的链接、Datagrid 内容的书评以及不断增加的 Datagrid 常见问题。Marcie 还花费了大量时间主持 ASP.NET 论坛,回答有关 Datagrid 的各种问题。Marcie 当前的任务是指导各公司开发自己的 .NET 技术。如果您的组织需要这方面的专业咨询或培训,请联系 Marcie@DatagridGirl.com

参考站点:

MetaBuilders.com。免费的自定义 Datagrid 列,包括源代码 (C#)。

DatagridGirl.com。有关 Datagrid 的各种资源。

Scott Mitchell 著的《ASP.NET Data Web Controls》,SAMS 2003 年出版。ISBN 0672325012

 
 
分享到:
评论

相关推荐

    ASP.NET常见问题集锦.zip

    为 ASP.NET Datagrid 创建自定义列.doc 为DataGrid写一个DropDownListColumn.txt 从 ASP.NET 服务器控件插入客户端脚本.doc 从 ASPX 页面进行 Web 服务调用时的性能考虑.do 使用 .NET 框架轻松开发完美的 Web ...

    Asp.net2.0创建自定义右键菜单控件源码

    Asp.net2.0创建自定义右键菜单控件源码 很值得学习,在很多地方可以用的上,比如:DataGrid,List^^^^^^自己看着办吧

    asp.net DataGridTree表格树控件

    继承asp.net的DataGrid控件实现的表格树控件 /*表格树控件说明 * 此控件继承DataGrid 新增属性说明: * 1.TreeParentCode:顶级根节点parentcode * 2.TreeDisplayDeep:展现表格树深度默认为1 * 3.SumColumns:...

    ASP.NET中DataGrid添加超链接、自定义显示示、页脚汇

    ASP.NET中DataGrid添加超链接、自定义显示示、页脚汇

    ASP.NETDatagrid创建自定义列

    对于Datagrid控件来说,要实现该目的,需要将常用的代码放到一个内置的列类型中(将在第一个示例中使用),然后创建一个可以在多个Datagrid对象中重复使用的自定义列类型。 本文介绍使用标准TemplateColumn在一个...

    一个ASP.NET DataGrid自定义控件,只需更改单个属性值即可冻结标题,行,列

    一个ASP.NET DataGrid自定义控件,仅通过更改单个属性值就可以冻结DataGrid中的标题,列和行。 它是从.NET DataGrid继承的,因此DataGrid的所有功能仍然可用。

    自定义asp.net中DataGrid的一个分页控件

    自定义asp.net中DataGrid的一个分页控件。。 在winform下实现。。。其实有了思路哪儿写都一样O(∩_∩)O哈哈~

    基于ASP.NET的自定义分页显示

    基于ASP.NET的自定义分页显示,针对WEB数据库记录的显示问题,用实例讨论了在ASP.NET框架下使用DataGrid控件对数据库记录的一种自定义分页显示

    asp.net开发常用整理集合

     Asp.net页面内传参数方法  调用存储过程(两种方法比较)  调用存储过程通用类DBHelper  加密解密  SQL常用DBHelper  Asp.net存储过程无限分类  TreeView无限分类  无限分类MVC  荧光棒效果 获取...

    ASP.NET学习大全

    实现一个Asp.net自定义Back控件.txt 使用XML创建Excel文档.txt 鼠标停留在GridView某一行时颜色改变.txt 微软提供的加密方法.txt 无法破解的软件注册码算法.txt 用Asp.net实现简单的文字水印.txt 用ASP.Net写一个...

    Programming ASP.NET(第三版)

    自定义ASP.NET控件;Web服务概观;创建和消费一个用于证券报价机的Web服务示例;解释ASP.NET缓存技术;ASP.NET中用于验证、授权和模拟的安全选项;ASP.NET中的配置和部署选项:一个数据库设计快速指南的附录。本书...

    asp.net 自定义DropDownList(CustomDropDownList)

    用DataGrid基于jQuery(实际上只用了它的按照类查找元素一个方法)写的自定义DropDownList,解决不能控制生成后的Select html控件不能控制zIndex而遮挡Div层及其他复杂样式,并且可以自动回发到服务器,没有封装成dll...

    Programming ASP.NET 中文版 (第3版) pdf Part06

    自定义ASP.NET控件;Web服务概观;创建和消费一个用于证券报价机的Web服务示例;解释ASP.NET缓存技术;ASP.NET中用于验证、授权和模拟的安全选项;ASP.NET中的配置和部署选项;一个数据库设计快速指南的附录。 本书...

    asp.net学习大全(超全面的资料整合)

    实现一个Asp.net自定义Back控件.txt 使用XML创建Excel文档.txt 鼠标停留在GridView某一行时颜色改变.txt 微软提供的加密方法.txt 无法破解的软件注册码算法.txt 用Asp.net实现简单的文字水印.txt 用ASP.Net写一个...

    ASP.NET基础控件-教程

     Asp.net页面内传参数方法  调用存储过程(两种方法比较)  调用存储过程通用类DBHelper  加密解密  SQL常用DBHelper  Asp.net存储过程无限分类  TreeView无限分类  无限分类MVC  荧光棒效果获取控件上全选 ...

    Programming ASP.NET 中文版(第3版).rar

    自定义ASP.NET控件;Web服务概观;创建和消费一个用于证券报价机的Web服务示例;解释ASP.NET缓存技术;ASP.NET中用于验证、授权和模拟的安全选项;ASP.NET中的配置和部署选项:一个数据库设计快速指南的附录。. ...

    Programming ASP.NET 中文版(第3版)

    自定义ASP.NET控件;Web服务概观;创建和消费一个用于证券报价机的Web服务示例;解释ASP.NET缓存技术;ASP.NET中用于验证、授权和模拟的安全选项;ASP.NET中的配置和部署选项:一个数据库设计快速指南的附录。. ...

    ASP.NET中自定义DataGrid分页设置的实现

    这里实现了DataGrid的个性化分页,现在把代码贴出来朋友们参考,同时在这个功能的实现过程,参考了“飞刀”从国外翻译的一篇文章。

    Programming.ASP.NET.中文版(第3版).part1.rar

    自定义ASP.NET控件;Web服务概观;创建和消费一个用于证券报价机的Web服务示例;解释ASP.NET缓存技术;ASP.NET中用于验证、授权和模拟的安全选项;ASP.NET中的配置和部署选项;一个数据库设计快速指南的附录。 本书...

    Programming ASP.NET中文版(第3版) pdf part3

    自定义asp.net控件;web服务概观;创建和消费一个用于证券报价机的web服务示例;解释asp.net缓存技术;asp.net中用于验证、授权和模拟的安全选项;asp.net中的配置和部署选项:一个数据库设计快速指南的附录。

Global site tag (gtag.js) - Google Analytics