为什么我的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 为空?