为什么我的CommandArgument为空?

kev*_*aub 6 asp.net listview commandargument

我有一个ASP.Net页面,它向用户显示一个选项列表.当他们从列表中选择时,它会回发并查询sql server.结果显示在更新面板中选项下方的列表视图中.下面是ItemTemplate的片段:

<asp:LinkButton Text="Save IT" OnCommand="SaveIt" CommandArgument="<%# Container.DataItemIndex %>" runat="server" />
Run Code Online (Sandbox Code Playgroud)

DataItemIndex没有出现,所以我的commandargument是空的.但是,对象发件人是显示项目的按钮.

为什么索引项不出现在CommandArgument中?

可能是帖子回来了吗?如果是这样,为什么会回帖?有办法解决吗?

编辑:对不起,从我之前尝试解决它,我发布了错误的代码,但它仍然没有出现.

解决方案:我找到了另一种解决方法,即OnCommand的发送者是链接按钮,它具有CommandArgument.我将粉笔这个问题成为多个回发和javascript的问题.

Jak*_*ade 8

您不能<%= %>在具有属性的标记上使用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
Run Code Online (Sandbox Code Playgroud)