使用两次时,Repeater出错

时间:2016-01-15 16:00:56

标签: c# asp.net

我有一个Repeater,它包含几个ImageButton元素。我第一次将一个图像列表添加到该Repeater的数据源中,它完全正常工作:

Repeater.DataSource = images;
Repeater.DataBind();

我有一个TextChanged - 事件,在那个事件中,我想用一个新的图像列表覆盖DataSource。

当我这样做时,我收到一个回叫错误。评论出第一个DataBind使第二个完美无缺。我该如何解决这个问题?

编辑:我收到的错误信息是德语(此处:http://i.imgur.com/M9wxexm.jpg),但粗略翻译,则表示:无效的回发或回调参数。使用< .pages enableEventValidation =“true”/。>启用事件验证。 ...

1 个答案:

答案 0 :(得分:1)

由于您收到callback错误,因此应尝试禁用aspx页面的事件验证。这需要在页面指令中完成,该指令将位于aspx页面的顶部。

<%@ Page EnableEventValidation="false"%>

还要牢记以下事实。

  1. 对于第一个数据绑定,我假设它在Page_Load事件中。如果是这种情况,那么请确保它仅在页面未回发时执行,因为在页面回发后,您有文本更改逻辑来填充转发器。

    protected void Page_Load( object sender, EventArgs e) 
    {
      if(!Page.IsPostBack)
       {
        Repeater.DataSource = images;
        Repeater.DataBind();
       }
    }
    
  2. 然后在您的文本更改事件数据绑定相同的转发器,并确保在设置它的数据源后调用DataBind方法。因此,在文本更改事件处理程序中包含以下两行。当然,images变量需要在文本更改事件中替换为适当的变量。

        Repeater.DataSource = images;
        Repeater.DataBind();