6

ユーザーにオプションのリストを表示する ASP.Net ページがあります。リストから選択すると、ポストバックが実行され、SQL サーバーにクエリが実行されます。結果は、更新パネルのオプションの下のリストビューに表示されます。以下は、ItemTemplate のスニペットです。

<asp:LinkButton Text="Save IT" OnCommand="SaveIt" CommandArgument="<%# Container.DataItemIndex %>" runat="server" />

DataItemIndex が表示されないため、コマンド引数は空です。ただし、オブジェクト送信者はアイテムを表示するボタンです。

CommandArgument にインデックス項目が表示されないのはなぜですか?

ポストバックでしょうか。もしそうなら、なぜポストバックになるのでしょうか?それを回避する方法はありますか?

編集: 申し訳ありませんが、以前に解決しようとして、悪いコードを投稿しましたが、まだ表示されません。

解決策: OnCommand の送信者が CommandArgument を持つリンク ボタンであるという別の回避策を見つけました。この問題は、複数のポストバックと JavaScript の問題であると考えます。

4

5 に答える 5

0

このサイトは、この問題を解決するのに本当に役立ちました: http://forums.asp.net/t/1671316.aspx

私が遭遇した問題は、ボタンを 2 回目にクリックしたときに、commandargument で null 引数が渡されていたことです。上記の投稿で説明しているように、これは commandargument が databind イベントでのみ設定されるためです。したがって、これを修正するには、page_load サブに databind イベントを含めます。

元。(VB)

Private Sub BindSelectButtons()       

    'Purpose: bind the data to the select buttons for commandargument to be used
    Dim i As Integer
    For i = 0 To gridview1.Rows.Count - 1
        gridview1.Rows(i).Cells(8).FindControl("btnID").DataBind()
    Next
End Sub

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load

    'Rebind select buttons so that the commandargument refreshes
    BindSelectButtons()
End Sub
于 2013-11-30T05:40:43.607 に答える
0

あなたはそれを設定していません

あなたはおそらく欲しい

<%# Container.DataItemIndex %>

また

<%= Container.DataItemIndex %>

:)

于 2009-09-05T00:48:57.030 に答える
0

試す

<asp:LinkButton Text="Save IT" OnCommand="SaveIt" CommandArgument="<%# Container.DataItemIndex %>" runat="server" />

「#」記号がありませんでした。

于 2009-09-05T00:49:40.340 に答える