创建自滚动的DataGrid

王朝c#·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

创建自滚动的DataGrid

作者:孟宪会 出自:【孟宪会之精彩世界】 发布日期:2003年6月9日 4点33分44秒

在使用DataGrid时,如果页面很长,可能需要用户自己来拉动滚动条,下面的例子实现了自动滚动的功能。其基本原理就是利用了LinkButton的锚点的功能,如果使用PushButton,那还必须自己添加锚点。另外必须弄明白的是Page的PostBack时的客户端脚本:

这段脚本中__doPostBack函数有两个参数:第一个eventTarget是触发PostBack的控件的UniqueID;第二参数eventArgument是一个对象,包含PostBack的额外信息。因此我们使用UniqueID来作为锚点的值。

源代码如下:

查看例子

DataGridAutoScroll.aspx

代码:DataGridAutoScroll.aspx.vb

Imports System

Imports System.Web

Imports System.Web.UI.WebControls

Imports System.Collections

Imports System.Data

Imports System.Data.SqlClient

Public Class DataGridAutoScroll

Inherits System.Web.UI.Page

Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid

Protected mengxianhui As New HtmlGenericControl()

#Region " Web Form Designer Generated Code "

Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

mengxianhui.InnerText = "【孟宪会之精彩世界】之.NET开发者园地"

If Not Page.IsPostBack Then

DataGrid1.DataSource = CreateDataSource()

DataGrid1.DataBind()

Else

Dim startUpScript As String

startUpScript = ""

Me.RegisterStartupScript(Me.UniqueID & "StartUp", startUpScript)

End If

End Sub

Function CreateDataSource() As ICollection

Dim dt As DataTable

Dim dr As DataRow

Dim i As Integer

'创建 DataTable

dt = New DataTable()

dt.Columns.Add(New DataColumn("字符型值", GetType(String)))

dt.Columns.Add(New DataColumn("布尔型值", GetType(Boolean)))

dt.Columns.Add(New DataColumn("货币型值", GetType(Double)))

'示例数据

For i = 1 To 150

dr = dt.NewRow()

dr(0) = "Item " + i.ToString()

If (i Mod 2 0) Then

dr(1) = True

Else

dr(1) = False

End If

dr(2) = 1.23 * (i + 1)

'向datatable添加 row

dt.Rows.Add(dr)

Next

'返回DataTable的DataView

CreateDataSource = New DataView(dt)

End Function

Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, _

ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound

Select Case e.Item.ItemType

Case ListItemType.Item, ListItemType.AlternatingItem

Dim editButton As LinkButton = New LinkButton()

editButton = CType(e.Item.Cells(0).Controls(0), LinkButton)

editButton.Attributes.Add("name", "#" & editButton.UniqueID)

Case ListItemType.EditItem

Dim UpdateButton As LinkButton = New LinkButton()

UpdateButton = CType(e.Item.Cells(0).Controls(0), LinkButton)

UpdateButton.Attributes.Add("name", "#" & UpdateButton.UniqueID)

End Select

End Sub

Private Sub DataGrid1_EditCommand(ByVal source As Object, _

ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand

DataGrid1.EditItemIndex = e.Item.ItemIndex

DataGrid1.DataSource = CreateDataSource()

DataGrid1.DataBind()

End Sub

Private Sub DataGrid1_CancelCommand(ByVal source As Object, _

ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand

DataGrid1.EditItemIndex = -1

DataGrid1.DataSource = CreateDataSource()

DataGrid1.DataBind()

End Sub

Private Sub DataGrid1_UpdateCommand(ByVal source As Object, _

ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand

DataGrid1.EditItemIndex = -1

DataGrid1.DataSource = CreateDataSource()

DataGrid1.DataBind()

End Sub

End Class

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航