单击超链接字段时更改Gridview行样式

时间:2009-04-14 18:12:23

标签: c# asp.net gridview hyperlink

我有一个ASP.NET(2.0使用C#)Web应用程序,我在页面上有一个gridview(My_Page.aspx)。 gridview从Oracle数据库获取其数据。我在gridview中有一个超级链接字段,当单击时,回发到同一页面,但点击项目的详细信息(使用QueryString)。

<asp:HyperLinkField DataNavigateUrlFields="ID" 
                    DataNavigateUrlFormatString="My_Page.aspx?id={0}"
                    DataTextField="NAME" 
                    HeaderText="Item1" 
                    SortExpression="NAME" />

我想知道如何更改单击超链接的行的样式。

任何想法?

谢谢。

3 个答案:

答案 0 :(得分:3)

首先,HyperLink(字段)通常不会回发,但在您的情况下,请求使用新参数的同一页面。

要为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";
}

答案 1 :(得分:0)

我建议您使用Javascript来实现这一目标。 由于您无法直接使用linkbutton, 您必须在DOM中导航到父TR(TableRow)元素并设置其类属性。

首先,添加onclick属性(如果HyperLinkField不可能,请尝试使用简单的HyperLink或LinkBut​​ton)

将控件作为参数传递给Javascript函数

onclick="selectRow(this)"


function selectRow(hyperlink) { ... }

我会让你弄清楚如何在DOM中导航以找到父TR。

一些参考文献:

domtables

domstructure

希望有所帮助

答案 2 :(得分:0)

我的情况:

<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中。