C# 如何在asp.net中的DataView网格行上创建以行索引为参数的onclick处理程序?
我有一个ASP.net dataview网格,我希望每一行都有一个用onclick属性和光标指针编写的函数 编译文件并在浏览器中打开时,行应如下所示:C# 如何在asp.net中的DataView网格行上创建以行索引为参数的onclick处理程序?,c#,javascript,asp.net,gridview,C#,Javascript,Asp.net,Gridview,我有一个ASP.net dataview网格,我希望每一行都有一个用onclick属性和光标指针编写的函数 编译文件并在浏览器中打开时,行应如下所示: <tr onclick = 'update( 1 )'> <td>..... </td> </tr> <tr onclick = 'update ( 2 )' <td>..... </td> </tr> ..... 相反,为什么不能在datag
<tr onclick = 'update( 1 )'>
<td>..... </td>
</tr>
<tr onclick = 'update ( 2 )'
<td>..... </td>
</tr>
.....
相反,为什么不能在datagridview的SelectedIndexChanged()
事件中写入所需的功能?您还可以像这样设置所选索引的样式
<SelectedItemStyle Font-Size="10px" Font-Names="Verdana" HorizontalAlign="Left" ForeColor="Black" VerticalAlign="Middle" BackColor="Gold"></SelectedItemStyle>
您可以在Gridview的行数据绑定事件中执行此操作
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onclick", "javascript:alert('Hello');");
e.Row.Style.Add("cursor", "pointer");
}
}
您可以在RowDataBound事件中使用e.Row访问tr,使用e.Row.RowIndex访问索引。如果要访问对象的真实Id或旧值,可以使用e.Row.DataItem访问绑定数据
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow )
{
var theItem = e.Row.DataItem as MyItemType;
e.Row.Attributes.Add("onclick","update('" + e.Row.RowIndex + "')");
e.Row.Style.Add("cursor", "pointer");
}
}
对于行集合,索引从0开始,因此如果希望索引从1开始,则需要将1添加到行索引中。此onclick事件。。这是否指向自定义javascript函数?意思update(1)
是客户端javascript函数吗
当单击一行datagridview时,您希望执行一些服务器端操作。。这就是方法
将select命令列添加到datagridview:这将允许用户选择一行
在datagridview的onSelectedIndexChanged事件处理程序中编写所需操作
下面是gridview的aspx
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="Id" DataSourceID="SqlDataSource1"
EmptyDataText="There are no data records to display." BackColor="White"
BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3"
ForeColor="Black" GridLines="Vertical"
onselectedindexchanged="GridView1_SelectedIndexChanged">
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True"
SortExpression="Id" />
<asp:BoundField DataField="UserId" HeaderText="UserId"
SortExpression="UserId" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
</Columns>
<FooterStyle BackColor="#CCCCCC" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#CCCCCC" />
</asp:GridView>
注意列中的标记
您的事件处理程序将类似于。。。
受保护的void GridView1\u SelectedIndexChanged(对象发送方,事件参数e)
{
//你想在这里写什么就写什么
}
您的问题不清楚,请详细说明。代码已被网站删除,现在已清晰。简单明了。忘记您可以在OnRowDataBound事件中访问行的属性。但是,OP表示他希望从1开始计数,而你的将从0开始计数。您还需要提供代码,确保当鼠标悬停在Tr上时,它是一个光标。OP希望在单击行的任意位置时,能够使用客户端脚本更新行。您通过添加一个按钮来更改UI,并在服务器端执行更新。@PHeiberg问题是“在asp.net中的DataView网格行上,如何使用行索引作为参数进行onclick?”。。。该描述在任何时候都不意味着正在研究的是客户端解决方案。。。这就是为什么我提到这是后一种翻译的解决方案。但是,此代码会转换为javascript。除非我缺少一些基本的东西,否则您的解决方案将发出的唯一javascript代码是ASP.NET为update按钮生成的代码,但不会调用OP的更新脚本。简而言之,OP需要客户端执行,这个答案提供服务器端执行。@PHeiberg-我同意这个答案提供服务器端执行的事实。它确实明确指出了这一点。但是说OP的问题暗示了这一点是不正确的,更不用说明确指出这是一个客户端执行,它没有调用服务器端功能。这就是这个答案的实际作用。生成的客户端脚本处理突出显示正确行的UI更新,同时发生回发以执行任何逻辑操作。确定,已授予。问题不是那么清楚。我基于OP的预期输出进行假设。我可以更改鼠标悬停所在行的颜色吗?