的更新 的
我应该学会更仔细地阅读错误消息。我忘了在gridview的列规范中更改一些ID,这些ID是相同的,导致“多个相同ID”错误。
感谢所有阅读我的问题和曾经试图帮助我的人。我脸上的自由拍打
我正试图从位于GridView内部的usercontrol内的ImageButton获取OnClick或OnCommand事件。我尝试创建图像按钮,因此它会抛出一个命令:
<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或其他什么?
答案 0 :(得分: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...
}
答案 1 :(得分:0)
我解决了这个问题。我的UserControl中确实有重复的ID。我更新了原来的问题。