2009-01-20 71 views
7

我有一个.NET repeater控件是data-bound到列表。作为Repeater的Item Collection的一部分,我有一个“删除按钮”,可以有效地删除当前的List元素。如何动态刷新.NET数据绑定中继器控件

这是有效的,在代码隐藏中,我可以成功地从中继器datasource中删除一个项目。

我的问题是这样的当我重新更新datasource并再次调用MyRepeater.DataBind(),在直放站接口不删除的项进行刷新。

我正在寻找该事件以根据更新的列表基本上重绘或刷新中继器。感谢任何指针或例子。

回答

4

你需要调用“的DataBind”的方法在你的数据源,然后电话“的DataBind在您的Repeater控件。

1

您是否喂养了刷新的数据源?

如果您在代码隐藏中设置数据源,则需要将其设置为刷新数据,然后调用DataBind方法。

+0

是的。我刷新数据源并立即调用DataBind方法。 – 2009-01-20 22:09:41

+0

嗯...也许你可以发布一些你的代码。 – 2009-01-20 22:25:07

0

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

通常情况下,如果您在点击事件中执行了删除操作,那么中继器应该自动刷新,因为在preRender中自动刷新,页面上的控件是DataBind()。这里是微软的文档说:

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

source

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

希望它可以帮助

0

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

我在Repeater和xmlDataSource上将“EnableViewState”设置为False,并将xmlDataSource上的“EnableCaching”设置为False。我设置xmlDataSource的Data属性,为xmlDataSource调用DataBind,设置中继器的DataSourceID属性,然后为中继器调用DataBind。也许这是过度杀伤......但它的工作。也许这会有所帮助。

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

1

我遇到了类似于Repeater Control和DataTable源代码的东西。

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