2011-01-31 28 views
5

我已经通读了许多与我的情况有关的问题,但我还没有找到一个问题。我目前有一个带有4个绑定项的转发器,点击转发器中的一个按钮会导致我的错误,下面是标记和代码隐藏。有人可以向我解释为什么会发生这种情况并解决它吗? (我已经排除了页面decleration,只是包含在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 
+2

[“无效的回发或回调参数”与Databound控件的可能重复](http://stackoverflow.com/questions/293699/invalid-postback-or-callback-argument-with-databound-controls) – AakashM 2012-02-15 12:24:09

回答

0

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

问题是在页面Load事件和调用DataBind()方法加载控件的数据。但是,如果在引发事件之前调用DataBind()方法,那么随着控件命名已更改,会生成上述异常。

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

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

3

发生这种情况的原因是Repeater在执行item命令操作时正在获取数据源(绑定)。只需将if(not ispostback)添加到page_load方法。

相关问题