如何在回发后刷新DataBind()

时间:2013-08-23 07:47:36

标签: asp.net data-binding

我正在开发一个asp.net网站,向用户显示新闻。新闻显示在网站上,并在用户控件中显示转发器。现在我正试图用一个按钮插入到Repeater的ItemTemplate中来删除这些新闻(所以按钮是动态创建的):

    <asp:Button ID="DelBtn" runat="server" OnClientClick="if(!confirm('Really want to delete?')){return false;}" OnClick="cmdDeleteNews_Click" CommandArgument='<%# Eval("NewsID") %>'  />

从数据库中删除不是问题。但是如何在之后进行Usercontrol刷新,所以删除的新闻不再显示在网站上了?简单地使用Java Script删除元素是可能的,但由于会有许多用户,他们在网站上更新,插入和删除新闻,因此死锁是非常可行的。使用window.location.reload()的Reloading the Page也是可能的,但实际上没有意义。因此,我正在寻找一种解决方案来更新PostBack上的News-Repeater的数据绑定。但是由于DataBind() - Method不能用于Postback,我希望你有一个类似的解决方案来解决这个问题,或者可能是一种解决方法。 News-Repeater的DataBind()在Usercontrol的Codebehind中完成

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ' Databind on PostBack is not permitted (InvalidPostbackException)
       If Not IsPostBack Then
          NewsRepeater.DataSource = Items
          NewsRepeater.DataBind()
          ContentRepeater.DataSource = Items
          ContentRepeater.DataBind()
       End If
    End Sub

1 个答案:

答案 0 :(得分:1)

cmdDeleteNews_Click中重新加载数据源。然后DataBind数据绑定控件。

Protected Sub cmdDeleteNews_Click(sender As Object, EventArgs As e)
  ' Delete logic here .... '

  ' Then reload and DataBind all:
  Dim items = GetItems()
  NewsRepeater.DataSource = items 
  NewsRepeater.DataBind()
  ContentRepeater.DataSource = Items
  ContentRepeater.DataBind()
End Sub