我有一个ASP.Net页面,该页面向用户显示选项列表。当他们从列表中选择时,它将回发并查询sql服务器。结果显示在更新面板中选项下方的 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