获取 GridView 控件中的行索引 Asp.net 如果我有此行中的单元格值



我在我的窗体中添加了一个网格视图控件,并通过数据表填充。我将每行的第一列创建为链接按钮,并设置相同的onclick事件。然后我可以获取此链接按钮的文本。

<asp:TemplateField HeaderText="DocName">
    <ItemTemplate>
        <asp:LinkButton ID="DocName" runat="server" Text='<%# Eval("DocName") %>' OnClick="DocNameClick"></asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>

如果用户单击单击事件中任何行的链接按钮,我想获取整行。

protected void DocNameClick(object sender, EventArgs e)
 {
     LinkButton btn = (LinkButton)sender;
     string name = btn.Text;
 }

通过强制转换按钮的NamingContainer属性,您可以获得GridViewRow(因此此TemplateField中的所有其他控件都通过 FindControl ):

protected void DocNameClick(object sender, EventArgs e)
{
    LinkButton btn = (LinkButton)sender;
    GridViewRow row = (GridViewRow) btn.NamingContainer;
    // use row.FindControl("ControlID") to get controls in other columns ...
    int rowIndex = row.RowIndex;
    string name = btn.Text;
}
protected void DocNameClick(object sender, System.EventArgs e)
{
    LinkButton btn = (LinkButton)sender;
    //Get the row that contains this button
    GridViewRow gvr = (GridViewRow)btn.NamingContainer;
}

您可以通过以下代码获取行index

LinkButton btn = (LinkButton)sender;
GridViewRow row = btn.NamingContainer as GridViewRow ;
int index = row.RowIndex;

添加到你链接命令参数

CommandArgument='<%# Container.DataItemIndex%>' 

并在您的方法中使用它

protected void DocNameClick(object sender, EventArgs e)
{
    LinkButton btn = sender as LinkButton;
    string name = btn.Text;
    if(!String.IsNullOrEmpty(name))
        int index = int.Parse(e.CommandArgument);
}

编辑:在命令参数上 int parse

试试这个:

protected void DocName_Click(object sender, EventArgs e)
{
    LinkButton btn = sender as LinkButton;
    string name = btn.Text;
}

相关内容

最新更新