我正在开发一个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
答案 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