なぜ私CommandArgumentが空っぽになってはいませんか?
-
21-09-2019 - |
質問
私はASP.Net ページの一覧が表示オプションはユーザーが行います。いリストから選択で、ドキュメントを問い合わせは、sqlサーバーです。その結果に表示されlistview以下のオプションが更新されます。以下に、スニペットのItemTemplate:
<asp:LinkButton Text="Save IT" OnCommand="SaveIt" CommandArgument="<%# Container.DataItemIndex %>" runat="server" />
のDataItemIndexが表示されませんので、私のcommandargumentは空になります。しかし、オブジェクトの送信者のボタンで表示する項目です。
なぜそのような指標にくいに登場するCommandArgument?
が入っているのか、それとも後戻ってきたのか?その場合、なぜなのだろうか。はしてもらえると助かりますか?
編集:だから私が解決しようとすれ以前に掲載して悪いコードされているが、それでもなんです。
分解能:またもう一つの作品の周りには、送信者のOnCommandのリンクボタンのCommandArgument.私はチョークはこの問題に問題には複数の供とが可能です。
解決
ご使用になれません <%= %>
書式の中性タグ付 runat="server"
属性。だと思いますが、良いモノのコードです。:)
更新:
ほとんどの場合にご使用になりたいItemDataBoundイベントのリピーターのlinkbuttonのCommandArgument物件です。
も優雅なものだVB.NET サンプルです。
Private Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
Select Case e.Item.ItemType
Case ListItemType.Item, ListItemType.AlternatingItem
Dim b As LinkButton = e.Item.FindControl("btn")
b.CommandArgument = e.Item.ItemIndex
b.DataBind()
End Select
End Sub
他のヒント
あなたがそれを設定していない
あなたはおそらくしたい。
<%# Container.DataItemIndex %>
または
<%= Container.DataItemIndex %>
:)
試してみてください
<asp:LinkButton Text="Save IT" OnCommand="SaveIt" CommandArgument="<%# Container.DataItemIndex %>" runat="server" />
あなたが "#" 記号を欠落していた。
このサイトは本当にこの問題で私を助けた: http://forums.asp.net/t /1671316.aspxする
私はに走った問題は、私は、ボタンの上に二度目にクリックしたときに私はcommandargumentでヌルの引数が渡されていたということでした。ポストは、上記のように説明しcommandargumentのみデータバインドイベントに設定されているため、これがあります。だから、この問題を解決するために、Page_Loadのサブでのデータバインドイベントを含める
例。 (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
必ずビューステートが有効にされていることを確認し e.Row.EnableViewStateは真=。