我有一个.NET repeater
控件data-bound
到列表。作为Repeater Item Collection
的一部分,我有一个“删除按钮”,可以有效地删除当前的List元素。
这样做,在代码隐藏中,我可以成功从 Repeater 的datasource
中删除项目。
我的问题是:,当我重置更新的datasource
并再次拨打MyRepeater.DataBind()
时, Repeater 界面不会刷新除去。
我正在寻找基于更新后的List重新绘制或刷新 Repeater 的事件。感谢您的任何指示或示例。
答案 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方法。
所以你可能影响了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,现在一切都很好。