【问题标题】:Changing Gridview row style onclicking a hyperlink field在单击超链接字段时更改 Gridview 行样式
【发布时间】:2010-10-19 10:09:57
【问题描述】:
我有一个 ASP.NET(使用 C# 的 2.0)网络应用程序,其中我在页面上有一个网格视图(My_Page.aspx)。 gridview 从 Oracle 数据库中获取数据。我在 gridview 中有一个超链接字段,单击该字段时,会回发到同一页面,但单击的项目的详细信息(使用 QueryString)。
<asp:HyperLinkField DataNavigateUrlFields="ID"
DataNavigateUrlFormatString="My_Page.aspx?id={0}"
DataTextField="NAME"
HeaderText="Item1"
SortExpression="NAME" />
我想知道如何更改单击超链接所在行的样式。
有什么想法吗?
谢谢。
【问题讨论】:
标签:
c#
asp.net
gridview
hyperlink
【解决方案1】:
首先,超链接(字段)通常不会回发,但在您的情况下,请求具有新参数的同一页面。
要为 GridView 行设置 CSS 类,请使用 RowCreated 事件执行以下操作:
protected void GridView_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
if (e.Row.DataItem.ToString() == Request["id"])
e.Row.CssClass = "highlighted-css-class";
}
【解决方案2】:
我建议您使用 Javascript 来实现。
由于您不能直接使用链接按钮,
您必须在 DOM 中导航到父 TR (TableRow) 元素并设置其类属性。
首先,添加 onclick 属性(如果 HyperLinkField 无法使用,请尝试简单的 HyperLink 或 LinkButton)
将控件作为参数传递给 Javascript 函数
onclick="selectRow(this)"
function selectRow(hyperlink) { ... }
我会让你弄清楚如何在 DOM 中导航以找到父 TR。
一些参考资料:
domtables
domstructure
希望对你有帮助
【解决方案3】:
我的情况:
<asp:GridView ID="gvProjects" runat="server">
<SelectedRowStyle CssClass="current" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="cmdShowProject" runat="server"
OnCommand="cmdShowProject_Command"
CssClass="show-project" CommandName="select"
</ItemTemplate>
</asp:TemplateField>
SelectedRowStyle 必须设置(通过单个属性或通过 CssClass)。
CommandName 必须为 "select" 才能更改 Row 样式。
GridView 位于 UpdatePanel 中。