如何从链接按钮抓取Ctl

本文关键字:抓取 Ctl 按钮 链接 | 更新日期: 2023-09-27 18:01:29

我有一个从存储过程中提取数据的gridview。在专栏标题中,我使用了一个链接按钮。我想抓住Ctl ID,并将其存储在一个变量,当它被点击。我不确定发生了什么,但我得到了一些字符串。下面是我的代码,这是类似于我以前的帖子。

ASP。净

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

 GridViewRow row = gv2.SelectedRow;
    string controlId = ((LinkButton)row.FindControl("lnkID")).ID;
    lblshow.Text = controlId;
谁能帮我起来跑一跑?谢谢。

如何从链接按钮抓取Ctl

您可以使用一个隐藏字段来存储id:

<ItemTemplate>
    <asp:HiddenField 
        runat="server" 
        ID="ID" 
        Value='<%# Eval("ID") %>' 
    />
    <asp:LinkButton 
        runat="server" 
        OnClick="LabelClick" 
        Text="click me" 
    />
</ItemTemplate>

然后:

protected void LabelClick(object sender, EventArgs e)
{
    var hiddenField = (HiddenField)((Control)sender).FindControl("ID");
    var id = hiddenField.Value;
    // Do something with the id        
}

更新:

完整的工作示例:

<%@ Page Language="C#" %>
<script type="text/c#" runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            grid.DataSource = Enumerable.Range(1, 10).Select(x => new
            {
                ID = x
            });
            grid.DataBind();
        }
    }
    protected void LabelClick(object sender, EventArgs e)
    {
        var hiddenField = (HiddenField)((Control)sender).FindControl("ID");
        result.Text = string.Format("selected id: {0}", hiddenField.Value);
    }
</script>
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <form id="Form1" runat="server">
        <asp:GridView ID="grid" runat="server" AutoGenerateColumns="false">
            <Columns>
                <asp:TemplateField HeaderText="ID">
                <ItemTemplate>
                    <asp:HiddenField 
                        runat="server" 
                        ID="ID" 
                        Value='<%#Eval("ID") %>' 
                    />
                    <asp:LinkButton 
                        runat="server" 
                        OnClick="LabelClick" 
                        Text="click me" 
                    />
                </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <asp:Label ID="result" runat="server" />
    </form>
</body>
</html>

在OnClick方法lblClick1中,您可以使用:

public void lblClick1(object sender, CommandEventArgs e)
{
    int controlId = Convert.ToInt32(e.CommandArgument); //get ID and store it in controlId
    lblshow.Text = controlId;
}