8

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

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

我的问题是当我重置更新datasourceMyRepeater.DataBind()再次调用时,Repeater界面不会刷新并删除项目。

我正在寻找基于更新的列表实质上重绘或刷新中继器的事件。感谢您提供任何指示或示例。

4

5 回答 5

3

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

于 2009-01-20T22:20:05.250 回答
1

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

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

于 2009-01-20T22:07:29.907 回答
1

我在Repeater Control 和DataTable 源中遇到了类似的情况。

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

于 2014-12-26T19:13:48.310 回答
0

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

通常,如果您在单击事件中进行了删除,则中继器应自行刷新,因为在 preRender 中自动刷新,页面上的控件是 DataBind()。这是微软的文档所说的:

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

来源

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

希望能帮助到你

于 2009-01-20T22:16:37.550 回答
0

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

我在转发器和 xmlDataSource 上将“EnableViewState”设置为 False,并将 xmlDataSource 上的“EnableCaching”也设置为 False。我设置了xmlDataSource的Data属性,xmlDataSource调用DataBind,设置repeater的DataSourceID属性,repeater调用DataBind。也许那是矫枉过正……但它奏效了。也许这会有所帮助。

更新:我发现通过在转发器控件上将 EnableViewState 设置为 False,我的 ItemCommand 事件不会触发。但我认为您只需将数据源的 EnableViewState/EnableCaching 设置为 False...我已将中继器的 EnableViewState 设置返回为 True,现在一切正常。

于 2009-01-29T16:32:07.350 回答