如何得到DataGrid中点击的当前行?

本文介绍了一个使用ASP.NET实现的示例,通过DataGrid控件展示数据,并为每一行添加了点击事件,当用户点击任意一行时,会显示该行的详细信息。示例中使用了VB.NET进行后端开发,展示了如何从数据库中获取数据并将其绑定到DataGrid上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面的代码实现了如何得到点击的当前行的数据

GetCurrentClickRow.aspx

<%@ Page Language="vb" EnableViewState="False" AutoEventWireup="false"
Codebehind="GetCurrentClickRow.aspx.vb" Inherits="aspxWeb.mengxianhui.com.GetCurrentClickRow"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>GetCurrentClickRow</title>
<meta content="Microsoft Visual Studio.NET 7.0" name="GENERATOR">
<meta content="Visual Basic 7.0" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body style="FONT-SIZE: 9pt" MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Panel id="Panel1" runat="server">
<asp:Label id="label1" Runat="server"></asp:Label>
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" CellPadding="4"
BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#CC9966">
<ItemStyle ForeColor="#330099" BackColor="White" Font-Size="9pt"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000" Font-Size="9pt"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="Title"></asp:BoundColumn>
<asp:BoundColumn DataField="CreateDate"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
</asp:Panel>
</form>
</body>
</HTML>

GetCurrentClickRow.aspx.vb

Imports System
Imports System.Data
Imports System.Data.OleDb
Public Class GetCurrentClickRow
Inherits System.Web.UI.Page
Protected WithEvents Panel1 As System.Web.UI.WebControls.Panel
Protected WithEvents label1 As System.Web.UI.WebControls.Label
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
#Region " Web Form Designer Generated Code "
<System.Diagnostics.DebuggerStepThrough()> 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
label1.Text = "获得所点击行的例子"
label1.Font.Bold = True
Panel1.HorizontalAlign = HorizontalAlign.Center
DataGrid1.Columns(0).HeaderText = "文章标题"
DataGrid1.Columns(1).HeaderText = "发布时间"
DataGrid1.HeaderStyle.HorizontalAlign = HorizontalAlign.Center
DataGrid1.AlternatingItemStyle.BackColor = System.Drawing.Color.Ivory
DataGrid1.HorizontalAlign = HorizontalAlign.Center
Dim cnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
+ Server.MapPath("Test.mdb")
Dim cn As New OleDbConnection(cnString)
cn.Open()
Dim strSQL As String = "SELECT TOP 10 Title,CreateDate FROM Document ORDER BY CreateDate DESC"
Dim cmd As New OleDbCommand(strSQL, cn)
DataGrid1.DataSource = cmd.ExecuteReader
DataGrid1.DataBind()
cn.Close()
cn.Dispose()
cn = Nothing
End Sub
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
e.Item.Attributes.Add("onclick", "this.style.backgroundColor='#FFCC66';alert('您点击的是:/n/n第" _
+ e.Item.ItemIndex.ToString() + "行/n/n文章标题是:" + e.Item.Cells(0).Text.Replace(",", "/'") + "')")
e.Item.Cells(1).Text = Format(System.Convert.ToDateTime(e.Item.Cells(1).Text.ToString()), "yyyy年M月d日")
If e.Item.Cells(0).Text.Length > 30 Then
e.Item.Attributes.Add("Title", e.Item.Cells(0).Text)
e.Item.Cells(0).Text = e.Item.Cells(0).Text.Substring(0, 28) + "…"
End If
End If
End Sub
End Class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值