Подтвердить что ты не робот

Получение выделенной строки aspgridview при нажатии кнопки ссылки, чтобы получить скрытое значение ID

Я связываю ссылку с данными заголовка в aspgridview, а также привязываю скрытую метку, которая содержит значение ID. когда пользователь нажимает на эту кнопку ссылки, я хотел бы получить доступ к значению идентификатора. Это мне нужно, потому что, если пользователь входит в систему, тогда только я вывожу подробное окно else else для получения более подробной информации для входа в систему.

в событии lnkTitle_Click() Я пытаюсь получить доступ к выбранной строке, чтобы найти элемент управления меткой.

GridViewRow grdSelRow = GridView1.SelectedRow;
Label lblID = (Label)grdSelRow.FindControl("lblID");

Но я получаю grdSelRow как null.

Как получить выбранную строку при нажатии на ссылку gridview?

4b9b3361

Ответ 1

Проблема заключается в том, что при нажатии кнопки в GridView строка будет отображаться только в виде строки, а не SelectedRow. Если вы хотите сделать это SelectedRow, вы должны указать CommandName="Select" в разметке Button.

Вот два метода для выполнения ваших требований.

Проводка события onclick для LinkButton внутри ItemTemplate

Разметка

<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server" 
                    Text="Click1" 
                    OnClick="LinkButton1_Click"/>
    </ItemTemplate>
</asp:TemplateField>

Code-за

protected void LinkButton1_Click(object sender, EventArgs e)
{
    GridViewRow clickedRow = ((LinkButton) sender).NamingContainer as GridViewRow;
    Label lblID = (Label)clickedRow.FindControl("lblID");
}

Использование RowCommand для захвата щелчка LinkButton.

Разметка

<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton2" runat="server" 
                    Text="Click2" 
                    CommandName="MyCustomCommand"/>
    </ItemTemplate>
</asp:TemplateField>

Code-за

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if(e.CommandName.Equals("MyCustomCommand"))
    {
        GridViewRow clickedRow = ((LinkButton)e.CommandSource).NamingContainer as GridViewRow;
        Label lblID = (Label)clickedRow.FindControl("lblID");
    }
}