0

アップデート

エラーメッセージをもっと注意深く読むことを学ぶべきです。グリッドビューの列仕様で同じ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 に答える