0

これに関連する投稿や記事がたくさんあることは知っていますが、それではそれらは私のケースを助けていないようです。このサイト( http://www.ezineasp.net/post/ASP-Net-LinkBut​​ton-Command-Event.aspx )の作業サンプルと比較したこともありますが、大きな違いはないと思います。私のコードは機能するはずだと思っていましたが、どうやら機能しないようです。これが重複しているように見える場合は申し訳ありませんが、ここに投稿するのは私の最後の手段です。

これが私のHTMLです:

    <asp:ListView runat="server" ID="AppsList">
        <LayoutTemplate>
            <div>
                <asp:PlaceHolder runat="server" ID="itemPlaceHolder" />
            </div>
        </LayoutTemplate>

        <ItemTemplate>
            <div class="applist">
                <div class="app">
                    <asp:ImageButton ID="imgbtnApp" runat="server" ImageUrl='<%#Eval("Icon") %>' height="100" width="100" CommandName="Select" CommandArgument='<%# Eval("ID") %>' OnCommand="AppsList_ItemCommand" />
                </div>
                <div class="appname">
                    <asp:LinkButton ID="linkbtnAppName" runat="server" CommandName="Select" ForeColor="#333333" CommandArgument='<%# Eval("ID") %>' OnCommand="AppsList_ItemCommand" CssClass="linkbtnAppName"><%# Eval("AppName") %></asp:LinkButton>
                </div>
            </div>
        </ItemTemplate>

        <EmptyDataTemplate>
            Sorry - Nothing found.
        </EmptyDataTemplate>
    </asp:ListView>

コード:

protected void AppsList_ItemCommand(object sender, CommandEventArgs e)
{
    if (e.CommandName == "Select")
    {
        txtTest.Text = e.CommandArgument.ToString();
    }
}

ここで達成しようとしているのは、画像ボタンまたはリンクボタンのいずれかをクリックしたときに、リストビュー内のアイテムのIDをテキストボックスにキャプチャすることです。どちらも同じことを実行します。私はすでに画像ボタンを機能させました。画像をクリックすると、ID、たとえば1がテキストボックスに表示されます。しかし、リンクボタンで同じことをしたいのですが、何も起こりません。イベントはまったくトリガーされていません。

同じことをするためにリピーターやAJAXについて話している投稿を見たことがありますが、なぜこのコードが機能しないのか疑問に思っていました。ポインタをいただければ幸いです。

4

4 に答える 4

1

私自身の経験では ViewStateMode="Disabled"、ページ ディレクティブを間違って設定しました。

このため、リスト ビュー内の LinkBut​​ton をクリックしてポスト バックが発生すると、既存のデータが消失します。そのため、LinkBut​​ton の OnCommand イベントに到達せず、決して発火しません。

ViewStateMode 属性が削除されると、すべてが正常に機能します。

于 2015-07-06T09:11:55.953 に答える
0

以下に示すように、eventArgs は CommandEventArgs ではなく ListViewCommandEventArgs にする必要があり、itemCommand イベントも aspx ページにバインドする必要があることに気付きました。

ASPX:

<asp:ListView runat="server" ID="AppsList" OnItemCommand="AppsList_OnItemCommand">

コードビハインド:

 protected void AppsList_OnItemCommand(object sender, ListViewCommandEventArgs e)
  {
    if (String.Equals(e.CommandName, "Select"))
    {
    }
  }

アップデート:

また、画像ボタンとリンク ボタン OnCommand="AppsList_ItemCommand" から OnCommand 属性を削除し、各 CommandName を他とは異なるものにする必要があります。

    <div class="applist">
        <div class="app">
            <asp:ImageButton ID="imgbtnApp" runat="server" ImageUrl='<%#Eval("Icon") %>' height="100" width="100" CommandName="Select" CommandArgument='<%# Eval("ID") %>'  />
        </div>
        <div class="appname">
            <asp:LinkButton ID="linkbtnAppName" runat="server" CommandName="Select" ForeColor="#333333" CommandArgument='<%# Eval("ID") %>' CssClass="linkbtnAppName"><%# Eval("AppName") %></asp:LinkButton>
        </div>
    </div>
</ItemTemplate>
于 2013-02-08T06:59:49.570 に答える