2011-07-01 152 views
0

我已經在我的網頁aspx.cs了這一事件:問題與頁面生命週期(asp.net)

public void deleteBtn_Click(object sender, CommandEventArgs e) 
{ 

    UsefulStaticMethods.DeleteComment(int.Parse(e.CommandName));   
} 

我試圖刪除該頁面的評論。刪除成功。但是,該事件發生後,網站界面並不會自行更新。

我的頁面加載負責使用動態按鈕(刪除評論)在頁面上繪製所有評論。

我知道何時刪除按鈕觸發,頁面加載之前觸發..這就是一個問題..因爲頁面加載重新創建頁面接口,而deleteBtn_click刪除評論,我想更新界面直接...「刷新」頁面沒有被刪除的評論..

如果我執行一個函數來再次繪製整個表,它會繪製另一個評論列表以及在頁面上繪製的評論列表加載事件。 我不能拒絕不在page_load繪製評論列表,因爲我需要在回發時重新創建的所有東西(包括動態創建的按鈕).-無法使用!Ispostback

問題是我該如何實現這一點/克服問題?

回答

2

通常,如果您使用數據綁定,那麼您可以重新綁定有問題的控件。也許,你應該修改你的函數來繪製註釋列表以清除現有的列表(可以通過從表格控件中刪除行或從容器面板或佔位符中清除控件集合(您可以引入一個佔位符控件,僅用於清除目的))。

刷新頁面的另一個破解是通過對同一頁面執行Server.Transfer來重新啓動頁面生命週期。一般來說,我不會推薦這種方法,除非頁面代碼結構非常複雜,刷新數據需要很多代碼。

+0

我認爲訴諸Response.Redirect。問題在於變化發生在事件時間。所以除非按鈕事件在頁面加載之前以某種方式觸發,否則它可以通知頁面加載的變化。但它沒有,所以頁面加載,像往常一樣加載不是最新的數據..因爲它在更新的按鈕事件之前觸發....如果我不生成頁面加載中的所有按鈕並將它們附加到佔位符..沒有事件會觸發,什麼都不會繪圖..因爲所有的頁面都是動態創建的..你看到了嗎? –

+0

控件的重新綁定工作在頁面加載..但它是一個數據控件,它接受一個數據源..我明白你的意思..仍然按鈕事件在頁面加載後觸發,,所以在註釋列表之前沒有發生刪除更改繪製 –

+0

@Dmitry,我不是建議你改變page_load。我只是說在按鈕單擊時,只需重新綁定數據(或重新創建控制樹以查看註釋列表)。你不應該使用'Response.Redirect',因爲它意味着不必要的往返客戶端 - 'Server.Transfer'肯定是更好的選擇。 – VinayC

-1

使用數據列表或中繼器服務器控件顯示註釋,並在刪除後再次綁定服務器控件。在Page_Load上使用!Ispostback。

+0

我告訴過你!isPostback永遠不會工作..我的整個頁面是動態創建的..它只有一個佔位符在頁面上..數據控制聲音有趣,但我現在想在沒有它們的情況下執行 –

0

您需要重新綁定控件。假設你的按鈕是在網格中,而不是你需要重新綁定()網格。如果不是,還有一種方法。將內容放在更新面板中並使用刪除按鈕設置更新面板觸發器。所以當刪除按鈕被點擊更新面板導致更新。