2013-08-23 73 views
1

我正在開發一個向用戶顯示新聞的asp.net網站。該消息在用戶控件中的中繼器上顯示在網站上。現在,我想刪除這些新聞跟我插入中繼器(因此該按鈕被動態地創建)的ItemTemplate中一個按鈕:如何在Postback後刷新DataBind()

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

的從數據庫中刪除是沒有問題的。但是,我怎樣才能使Usercontrol刷新,所以刪除的消息不再顯示在網站上?只需使用Java腳本刪除元素是可能的,但由於將有許多用戶在網站上更新,插入和刪除新聞,所以死鎖是非常可行的。使用window.location.reload()的Reloading the Page也是可能的,但沒有任何意義。正因爲如此,我正在尋找一種解決方案來更新PostBack上的News-Repeater的Databind。但是由於DataBind() - Method不能用於Postback,所以我希望你有類似的解決方案來解決這個問題或者解決方法。 的的DataBind()的新聞,中繼器在代碼隱藏在cmdDeleteNews_Click完成的用戶控件

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

刷新的數據源。然後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 
+0

非常感謝...你真的幫了我。沒想到解決方案會那麼簡單。 – cappi

+1

@cappi:記得接受:) –

+0

@TimSchmelter - 但是cappi的問題聽起來更像是爲其他用戶刷新數據(他的問題中有一句話 - 但是因爲會有很多Users_) – Prash

相關問題