为什么我的CommandArgument为空?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我的CommandArgument为空?相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

解决方案:我找到了另一种解决方法,即OnCommand的发送者是链接按钮,它具有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

我遇到的问题是当我第二次点击按钮时,我在命令参数中传递了null参数。正如上面的帖子所解释的那样,这是因为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;

以上是关于为什么我的CommandArgument为空?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 response.body 为空,而我的后端设备令牌为空?

为啥我的名字和姓氏都为空?

为什么我的SESSION数组在一页上可以,但在另一页上可以为空?

为啥我的 javascript 中的 document.body 为空?

为什么Apple AppStore应用内收据在iOS上为空?

恢复在c#中的GridView RowUPdating上设置的CommandArgument的值