我有一个 ASP.Net 页面,它向用户显示选项列表。当他们从列表中进行选择时,它会回发并查询 SQL Server。结果显示在更新面板选项下方的 ListView 中。以下是 ItemTemplate 的片段:
<asp:LinkButton Text="Save IT" OnCommand="SaveIt" CommandArgument="<%# Container.DataItemIndex %>" runat="server" />
DataItemIndex 未出现,因此我的命令参数为空。然而,对象发送者是显示项目的按钮。
为什么索引项没有出现在 CommandArgument 中?
可能是回帖吗?如果是这样,为什么会被退回?有办法解决吗?
编辑: 抱歉,从我之前尝试解决该问题的角度来看,我发布了错误的代码,但它仍然没有出现。
分辨率: 我发现了另一种解决方法,OnCommand 的发送者是链接按钮,其中包含 CommandArgument。我将把这个问题归结为多个回发和 JavaScript 的问题。
最佳答案
您不能使用<%= %>
带有 runat="server"
的标签属性内的语法属性。我很惊讶代码竟然还能运行。 :)
更新:
您可能想要在转发器上使用 ItemDataBound 事件,找到链接按钮并设置 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
关于asp.net - 为什么我的 CommandArgument 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1382087/