转发器控制导致无效的回发或回调参数

时间:2011-01-31 18:14:28

标签: vb.net

我已经阅读了许多与我的情况相关的问题,但我没有找到一个。我目前有一个带有4个绑定项目的转发器,点击转发器中的按钮导致我的错误,下面是标记和代码隐藏。有人可以向我解释为什么会发生这种情况并解决它吗? (我已经排除了页面变换,只包含了page_load事件。如果我应该剪切并过去完整的代码,请告诉我。)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title></title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <asp:Repeater ID="rptFoo" runat="server">
      <ItemTemplate>
        <asp:Button ID="btnfoo" runat="server" />
      </ItemTemplate>
    </asp:Repeater>
  </div>
  </form>
</body>
</html>

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim items As New List(Of String)
items.Add("test1")
items.Add("test2")
items.Add("test3")
items.Add("test4")
rptFoo.DataSource = items
rptFoo.DataBind()
End Sub

3 个答案:

答案 0 :(得分:4)

"Invalid postback or callback argument" with Databound controls

回答我的问题,其他任何人都需要这个

答案 1 :(得分:3)

这是因为Repeater在执行item命令操作时获取数据源(绑定)。只需将if(not ispostback)添加到page_load方法。

答案 2 :(得分:0)

我会在这里重复这个答案,所以你不需要链接到

问题是在页面Load事件中加载控件的数据并调用DataBind()方法。但是,如果在引发事件之前调用DataBind()方法,则会出现上述异常,因为控件命名已更改。

解决方案是将其更改为if(!IsPostback)DataBind(),然后在事件处理程序的末尾调用DataBind()方法。无论如何,您需要在处理程序结束时调用它来影响更改。

如果这不是您的问题,并且您正在使用JavaScript修改控件客户端,请查看this article