2

再会

我有包含链接按钮的gridview。单击链接按钮时如何检索链接按钮的值(文本)。

这就是我所做的。

<asp:TemplateField>
        <ItemTemplate>
            <asp:LinkButton ID="lnkProdCode" CommandName="ProdCode" runat="server" Width="115%" Text='<%# DataBinder.Eval(Container.DataItem,"CODE") %>' style="color:Black;font-size:smaller;"></asp:LinkButton>
        </ItemTemplate>
        </asp:TemplateField>

protected void gridReport_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "ProdCode")
    {   
        GridViewRow selectedRow = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer;
        string valueLink = selectedRow.Cells[0].Text;
        System.Diagnostics.Debug.WriteLine("This is the value " + valueLink);
    }



}

因为目前我没有得到价值。

4

2 回答 2

3

You already have the LinkButton, just use the Text property

if (e.CommandName == "ProdCode")
{   
    System.Diagnostics.Debug.WriteLine("This is the value " + 
                                       ((LinkButton)e.CommandSource).Text);
}
于 2013-02-04T11:57:24.127 回答
3

我不确定,但似乎您将值存储在 LinkBut​​ton 的文本中。你为什么不使用CommandArgument财产?

<asp:TemplateField>
   <ItemTemplate>
            <asp:LinkButton ID="lnkProdCode" CommandName="ProdCode" runat="server" Width="115%" Text='<%# DataBinder.Eval(Container.DataItem,"CODE") %>' CommandArgument='<%# DataBinder.Eval(Container.DataItem,"CODE") %>' style="color:Black;font-size:smaller;"></asp:LinkButton>
   </ItemTemplate>
</asp:TemplateField>

然后你将能够做到这一点:

protected void gridReport_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "ProdCode")
    {   
        System.Diagnostics.Debug.WriteLine("This is the value " + e.CommandArgument);
    }
}

当然,您必须复制数据,但我认为它更可取且更方便。

于 2013-02-04T12:12:16.070 回答