Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)delv
published in(发表于) 2014/1/23 3:11:11
Asp.Net实例:创建自滚动的DataGrid_[Asp.Net教程]

Asp.Net实例:创建自滚动的DataGrid_[Asp.Net教程]

















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





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




源代码如下:




查看例子




DataGridAutoScroll.aspx




<%@ Page Language="vb" AutoEventWireup="false" Codebehind="DataGridAutoScroll.aspx.vb"
Inherits="aspxWeb.DataGridAutoScroll"%>











BorderWidth="1px" BackColor="White" CellPadding="4">





CancelText="Cancel" EditText="Edit">






代码: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




出自:【孟宪会之精彩世界】

























If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759