0

更新

我应该学会更仔细地阅读错误信息。我忘记在我的列规范中为 gridview 更改一些相同的 ID,这导致了“多个相同的 ID”错误。

感谢您阅读我的问题以及曾经试图帮助我的所有人。免费拍我的脸


我试图从 GridView 内的用户控件内的 ImageButton 中获取 OnClick 或 OnCommand 事件。我尝试创建 imagebutton 所以它抛出一个命令:

<asp:ImageButton runat="server" ID="exchanceButton" 
        Visible="False" ImageUrl="../Images/Icons/Exchange.png" 
        CommandName="exchanceCommand" CommandArgument="1">

并在 GridView OnRowCommand 中捕获它,但我收到以下错误:找到具有相同 ID 'userControlPlan' 的多个控件。FindControl 要求控件具有唯一的 ID。 我尝试调试,但它根本没有到达我的 OnRowCommand。

我尝试了以下指南,但没有成功:http: //msdn.microsoft.com/en-us/library/bb907626.aspx

我还尝试通过在 UserControl 中创建自己的事件来执行该事件,然后为每个 UserControl 分配一个侦听器:

public delegate void OnExchanceClickDelegate(int id);

public event OnExchanceClickDelegate OnExchangeClick;

protected void exchanceButton_Click(object sender, ImageClickEventArgs e)
{
    if (OnExchangeClick != null)
    OnExchangeClick(1);
}

但我得到关于多个控件的相同错误。

你们中的任何人对我如何正确地将事件从 UserControl 内的 ImageButton 引发到 Gridview 或其他东西有任何建议吗?

4

2 回答 2

1

不确定这是否有帮助。但这就是我为我的网站所做的:

<asp:ImageButton ToolTip="Download File" ID="lbDownload" ImageUrl="/images/btn_download.gif" 
CommandArgument='<%# Eval("DocumentName") %>' runat="server" CommandName="DownloadDoc"/>

重要的部分是命令名称。

当然在您的 gridview 标签中使用 OnItemCommand 参数。然后在服务器端:

protected void itemCommand(object sender, GridCommandEventArgs e)
{
    if (e.CommandName == "DownloadDoc")
    // Do something...
}
于 2012-06-19T13:41:47.380 回答
0

我解决了这个问题。我的 UserControl 中确实有重复的 ID。我更新了我原来的问题。

于 2012-07-18T13:28:25.863 回答