【问题标题】:How to dynamically refresh a .NET databound repeater control如何动态刷新 .NET 数据绑定转发器控件
【发布时间】:2010-10-02 13:48:45
【问题描述】:

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

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

我的问题是这个当我重置更新的datasource并再次调用MyRepeater.DataBind()时,Repeater界面没有刷新并删除了Item。 p>

我正在寻找根据更新后的列表实质上重绘或刷新 Repeater 的事件。感谢您提供任何指示或示例。

【问题讨论】:

    标签: .net data-binding refresh repeater databound


    【解决方案1】:

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

    【讨论】:

    • 如果在这种情况下,源是一个“列表”,你怎么能从源调用“DataBind”?
    【解决方案2】:

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

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

    【讨论】:

    • 是的。我正在刷新数据源并立即调用 DataBind 方法。
    【解决方案3】:

    我遇到了类似的情况,其中包含一个中继器控件和一个 DataTable 源。

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

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

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

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

        source

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

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-06-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多