Изменение стиля строки Gridview при щелчке поля гиперссылки

У меня есть веб-приложение ASP.NET (2.0 с использованием C #), в котором у меня есть сетка на странице (My_Page.aspx). Gridview получает данные из базы данных Oracle. У меня есть поле гиперссылки в представлении сетки, которое при нажатии возвращает на ту же страницу, но с подробной информацией о выбранном элементе (с помощью QueryString).

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

Я хотел знать, как изменить стиль строки, в которой я щелкнул гиперссылку.

Любые идеи?

Спасибо.


person zohair    schedule 14.04.2009    source источник


Ответы (3)


Во-первых, гиперссылка (поле) обычно не отправляет обратно, но в вашем случае запрашивает ту же страницу с новыми параметрами.

Чтобы установить класс CSS для строки GridView, используйте событие 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";
}
person devio    schedule 14.04.2009

Я предлагаю вам использовать для этого Javascript. Поскольку вы не можете работать с кнопкой ссылки напрямую, вы должны перейти в DOM к родительскому элементу TR (TableRow) и установить его свойство класса.

Сначала вы добавляете атрибут onclick (если это невозможно для HyperLinkField, попробуйте простую HyperLink или LinkButton)

Передайте элемент управления в качестве параметра функции Javascript

onclick="selectRow(this)"


function selectRow(hyperlink) { ... }

Я позволю вам понять, как перемещаться по DOM, чтобы найти родительский TR.

Несколько ссылок:

domtables

domstructure

Надеюсь, поможет

person maxbeaudoin    schedule 17.04.2009

Моя ситуация:

<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". GridView находится в UpdatePanel.

person bdaniel7    schedule 24.03.2011