我有一个ASP.Net 页面,该页面列表显示选择的用户使用。当他们选择从清单,它不会后回和查询sql服务器。结果显示在一个列表视图下的选择在一个更新小组。下面是一个片段的ItemTemplate:

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

该DataItemIndex不会出现,所以我commandargument是空的。然而,对象送者的按钮,它显示了该项目。

为什么是索引项目没有出现在CommandArgument?

它可能是后背吗?如果是这样,为什么会是后背吗?是否有办法解决它吗?

编辑:对不起,我试图解决之前,我贴糟糕代码,但它仍然没有出现。

决议:我找到另一个工作周围在于发件人的空调的联系是按钮,它具有CommandArgument.我会粉笔这个问题是一个问题与多个回发和javascript。

有帮助吗?

解决方案

你不能使用 <%= %> 语法内的性质上的标记 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 = TRUE;

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top