将客户端ID传递给后面的代码

时间:2014-07-22 14:06:16

标签: c# asp.net

有没有办法将唯一的客户端ID传递给codebehind?我在gridview中有一个图像按钮,我希望做这样的事情:

<asp:ImageButton ID="imbView" runat="server" ToolTip="View details" ImageUrl="~/css/images/View.png" CommandName="wView" CommandArgument='#<%=imbView.ClientID%>' />

在调试时虽然我发现我的CommandArgument#<%=imbView.ClientID%> ..

要指定:我想传递一些唯一标识生成元素的东西(我认为ClientID是识别它的好方法)。

2 个答案:

答案 0 :(得分:4)

嗯?

假设你有

<asp:ImageButton ID="imbView" runat="server" ToolTip="View details" ImageUrl="~/css/images/View.png" CommandName="wView" OnCommand="aaa" />

然后 -

 protected void aaa(object sender, CommandEventArgs e)
    {
       var a= (sender as Control).ClientID;
    }

答案 1 :(得分:2)

以下是在RowCommand event中检索CommandArgument的方法。

您还可以在RowCommand事件中使用e.CommandSource as ImageButton

<asp:GridView ID="GridView1" runat="server"
    AutoGenerateColumns="False"
    OnRowCommand="GridView1_RowCommand">
    <Columns>
        <asp:TemplateField HeaderText="Detail">
            <ItemTemplate>
                <asp:ImageButton ID="imbView" runat="server"
                    ToolTip="View details" ImageUrl="~/css/images/View.png"
                    CommandName="wView"
                    CommandArgument='<%# Eval("Id") %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField HeaderText="Name" DataField="Name">
        </asp:BoundField>
    </Columns>
</asp:GridView>

代码背后

public class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GridView1.DataSource = new List<Item>
        {
            new Item {Id = 1, Name = "John"},
            new Item {Id = 2, Name = "Eric"},
        };
        GridView1.DataBind();
    }
}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "wView")
    {
        var imageButton = e.CommandSource as ImageButton;
        string clientId = imageButton.ClientID;

        int id = Convert.ToInt32(e.CommandArgument);
    }
}