为什么是我的CommandArgument空的?
-
21-09-2019 - |
题
我有一个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;
不隶属于 StackOverflow