代码之家  ›  专栏  ›  技术社区  ›  Ash Machine

如何动态刷新。NET数据绑定中继器控制

  •  8
  • Ash Machine  · 技术社区  · 16 年前

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

    这是有效的,在代码隐藏中,我可以成功地从 datasource 中继器 .

    我的问题是 : 当我重置更新时 数据源 并致电 MyRepeater.DataBind() 再一次,the 中继器 删除项目后,界面不会刷新。

    我正在寻找一个事件来重新绘制或刷新 中继器 根据更新后的名单。谢谢你的建议或例子。

    5 回复  |  直到 11 年前
        1
  •  3
  •   Dhaust    16 年前

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

        2
  •  1
  •   Brian Kim    16 年前

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

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

        3
  •  1
  •   yffu    10 年前

    我在使用Repeater Control和DataTable源代码时遇到了类似的情况。

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

        4
  •  0
  •   cdf cdf    16 年前

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

    我在中继器和xmlDataSource上将“EnableViewState”设置为False,并将xmlDataSource上的“EnableCaching”也设置为False。我设置了xmlDataSource的Data属性,称为xmlDataSource的DataBind,设置了中继器的DataSourceID属性,然后称为中继器的DataBind。也许这太过分了。…但它奏效了。也许这会有所帮助。

    更新:我发现通过在中继器控件上将EnableViewState设置为False,我的GetMommand事件不会触发。但我认为您只需要将数据源的EnableViewState/EnableCaching设置为False。..我已将中继器的EnableViewState设置恢复为True,现在一切似乎都很好。

        5
  •  0
  •   baptiste    16 年前

    强制数据绑定通常是在自动数据绑定在 预渲染 活动。

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

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

    source

    所以很可能你影响了Youritem。DataSource=列表,但MS建议使用YourItem。DataSourceID=列表。ID或类似的东西。

    希望能有所帮助