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

这个工作的,在代码隐藏我可以成功地从的datasource删除项目的中继器

我的问题是这样的当我重新更新datasource并再次调用MyRepeater.DataBind(),在转发的接口不符合项目刷新删除

我要寻找的事件基本上重绘或刷新的转发的基础上,更新列表。感谢任何指针或实施例。

有帮助吗?

解决方案

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

其他提示

您喂养刷新的数据源?

如果要在设定数据源代码隐藏,则需要与刷新的数据将它设置然后调用DataBind方法。

我跑进类似的东西与中继器控制和DataTable源。

有没有在数据表中的刷新方法,但调用DataTable.EnableDynamicData上初始页面加载(typeof运算(数据表))解决了这个问题。

我也有类似的情况...绑定到将XmlDataSource中继器,两者UpdatePanel内。我想让一次在一个名称的用户类型,然后单击“添加”按钮,可以更新中继列表中。

我设置“的EnableViewState”为False的中继器和的XmlDataSource,并设置“EnableCaching”上的XmlDataSource为False为好。我设置的XmlDataSource数据属性,所谓的DataBind为的XmlDataSource,设置中继DataSourceID属性,然后叫的DataBind的中继器。也许这就是矫枉过正...但它的工作。也许这将有所帮助。

更新:我发现,通过的EnableViewState设置为False的Repeater控件,我的ItemCommand事件将不会开火。但我认为你只需要设置的EnableViewState / EnableCaching为False数据来源...我已经回到将EnableViewState设置为True中继,现在一切似乎都很好。

强制数据绑定被正常完成,其中自动的DataBind在在的PreRender 事件进行。

一般来说,如果你没有在点击事件中删除,转发应本身,因为在自动预渲染刷新,页面上的控件的DataBind()。以下是微软的文档说:

  

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

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

希望它能帮助

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top