如何动态刷新.NET数据绑定转发器控件

时间:2009-01-20 22:00:10

标签: .net data-binding refresh repeater databound

我有一个.NET repeater控件data-bound到列表。作为Repeater Item Collection的一部分,我有一个“删除按钮”,可以有效地删除当前的List元素。

这样做,在代码隐藏中,我可以成功从 Repeater datasource中删除项目。

我的问题是,当我重置更新的datasource并再次拨打MyRepeater.DataBind()时, Repeater 界面不会刷新除去。

我正在寻找基于更新后的List重新绘制或刷新 Repeater 的事件。感谢您的任何指示或示例。

5 个答案:

答案 0 :(得分:4)

您需要在数据源上调用'DataBind'方法,然后在Repeater控件上调用'DataBind'。

答案 1 :(得分:1)

您是否正在提供刷新的数据源?

如果要在代码隐藏中设置数据源,则需要使用刷新的数据进行设置,然后调用DataBind方法。

答案 2 :(得分:1)

我使用Repeater Control和DataTable源遇到了类似的事情。

DataTable中没有Refresh方法,但在初始页面加载时调用DataTable.EnableDynamicData(typeof(DataTable))解决了这个问题。

答案 3 :(得分:0)

强制数据绑定通常在自动DataBind在 PreRender 事件中完成。

通常,如果您在click事件中执行了删除操作,则转发器应自行刷新,因为在preRender中自动刷新,页面上的控件是DataBind()。以下是微软的文档所说的内容:

  

PreRender:在此事件发生之前,每个设置了DataSourceID属性的数据绑定控件都会调用其DataBind方法。

source

所以你可能影响了Youritem.DataSource = List,但MS建议你做YourItem.DataSourceID = List.ID,或类似的东西。

希望有所帮助

答案 4 :(得分:0)

我有一个类似的情况......一个转发器绑定到一个xmlDataSource,都在UpdatePanel内。我想让用户一次输入一个名称,然后单击“添加”按钮更新转发器中的列表。

我在转发器和xmlDataSource上将“EnableViewState”设置为False,并将xmlDataSource上的“EnableCaching”设置为False。我为xmlDataSource设置了xmlDataSource的Data属性,为xmlDataSource设置了DataBind,设置了转发器的DataSourceID属性,然后为转发器设置了DataBind。也许这太过分了......但它确实有效。也许这会有所帮助。

更新:我发现通过在转发器控件上将EnableViewState设置为False,我的ItemCommand事件不会触发。但我认为你只需要为数据源设置EnableViewState / EnableCaching为False ......我已经为转发器返回了EnableViewState设置为True,现在一切都很好。