1

現在、列の 1 つとして asp:ButtonField を持つグリッドビューがあります。コマンドのイベント ハンドラーは、コマンド引数からグリッドビューの行 ID を抽出し、それを使用してロジックを実行します。この列のテンプレート フィールドを使用するように切り替える必要があり、次のようなことをしたいと考えています。

<asp:TemplateField HeaderText="Action">
    <ItemStyle HorizontalAlign="Center" />
        <ItemTemplate>
            <asp:LinkButton CommandName="myaction" CommandArgument="<%#Eval("id")%>" Text="do action" runat="server"/>
        </ItemTemplate>
 </asp:TemplateField>

私の問題は、CommandArgument 属性にあります。GridView の行 ID にする方法がわかりません。Eval("id") が機能しません - 行 ID プロパティの名前を知っている人はいますか? または、これを行うより良い方法はありますか?

4

2 に答える 2

3

Microsoft の Web サイトでこのドキュメントを確認してください。

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx

行 ID をバインドする必要はありません。コマンド引数は、行引数とは対照的に、イベント引数に使用されます...それが理にかなっている場合。

私が言おうとしているのは、行IDが暗黙的であるということだと思います。イベント CommandArgs にアクセスするときは、発生させようとしているイベントに固有のものである必要があります。

つまり、ページングする場合は、CommandArgument に「next」、「prev」、「first」、「last」、またはページ番号を指定します。

「削除」ボタンまたは ImageButton があるとします。ユーザーがクリックします。削除イベントはポストバックで受信され、行オブジェクト全体が引数として渡されて行からグリッドにバブルアップされます。次に、グリッドは、コントロール コレクション内の単一のコントロールであるかのように行を削除します。これは、テーブルがテーブル行のコレクションであるためです。

于 2008-12-03T20:37:47.277 に答える
1
CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>"
于 2011-07-07T12:46:37.720 に答える