asp.net - 为什么我的 CommandArgument 为空?

标签 asp.net listview commandargument

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

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

DataItemIndex 未出现,因此我的命令参数为空。然而,对象发送者是显示项目的按钮。

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

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

编辑: 抱歉,从我之前尝试解决该问题的角度来看,我发布了错误的代码,但它仍然没有出现。

分辨率: 我发现了另一种解决方法,OnCommand 的发送者是链接按钮,其中包含 CommandArgument。我将把这个问题归结为多个回发和 JavaScript 的问题。

最佳答案

您不能使用<%= %>带有 runat="server" 的标签属性内的语法属性。我很惊讶代码竟然还能运行。 :)

更新:

您可能想要在转发器上使用 ItemDataBound 事件,找到链接按钮并设置 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

关于asp.net - 为什么我的 CommandArgument 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1382087/

相关文章:

asp.net - 动态添加控件和 AJAX

c# - Umbraco - ContentTypeService 找不到内容类型

带有来自 URL 和 TextView 的 ImageView 的 Android ListView

android - 将搜索结果更新为 android 中的惰性适配器

asp.net - 在asp.net中的gridview中传递多个命令参数

C# 通过 Repeater 中的 CommandArgument 传递文本框内容

c# - asp.net C# 中长时间运行的进程

c# - 检查值是否为 null 或为空并分配值的其他方法

listview - React Native嵌套ListView在加载时多次触发onEndReached

c - 在 Visual Studio 中使用 "Command Arguments"进行调试不起作用