1

我正在开发一个向用户显示新闻的 asp.net 网站。新闻通过用户控件中的转发器显示在网站上。现在我正在尝试使用插入到中继器的 ItemTemplate 中的按钮删除这些新闻(因此按钮是动态创建的):

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

从数据库中删除不是问题。但是之后我如何使用户控件刷新,所以被删除的新闻不再显示在网站上?简单地使用 Java Script 删除元素是可能的,但由于会有很多用户在网站上更新、插入和删除新闻,死锁很容易发生。使用 window.location.reload()重新加载页面也是可能的,但实际上没有意义。因此,我正在寻找一种解决方案来更新 PostBack 上新闻转发器的数据绑定。但是由于 DataBind()-Method 不能用于 Postback,我希望您对此问题有类似的解决方案,或者可能是一种解决方法。新闻中继器的 DataBind() 是在用户控件的代码隐藏中完成的

    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
4

1 回答 1

2

重新加载数据源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
于 2013-08-23T07:52:56.873 回答