2013-02-15 52 views
0

我已經在代碼隱藏下面簡單的事件處理程序:爲什麼網格視圖僅在第二個函數調用時更新?

public void changeBlock(string blockname) 
{ 
    IntraNetEntities ent = new IntraNetEntities(); 
    var query = from x in ent.Mailings_blocked where x.blocked == blockname select x; 
    if (query.Count() == 0) 
    { 
    Mailings_blocked add = new Mailings_blocked(); 
    add.blocked = blockname; 
    ent.AddToMailings_blocked(add); 
    } 
    else 
    { 
    Mailings_blocked del = ent.Mailings_blocked.Single(c => c.blocked == blockname); 
    ent.DeleteObject(del); 
    } 
    ent.SaveChanges(); 
    updateStore(); 
    Grid_Business.RefreshView(); 
    Grid_Mailing.RefreshView(); 
} 

但是,當事件被觸發,該數據庫被更新,就像商店,但RefreshView()不正確執行。當單擊相同實用程序的任何其他按鈕(這是一個rowCommand)時,視圖會更新爲更早期的單擊所需狀態。

+0

這是一個ASP.Net應用程序嗎?如果是這樣,你有按鈕上AutoPostBack設置爲true?我懷疑這不是ASP.Net,所以你是否嘗試過在調試器中的代碼,看看是否有什麼不幸發生? – Melanie 2013-02-15 15:08:00

+0

作爲標記這是一個ext.net應用程序。我已經多次遍歷代碼,結果如我所料。我在RefreshView()中發現錯誤。這個函數不能像它說的那樣執行;)網格直接監聽store.data.changerecord事件 - >根本沒有必要調用該函數:(最後我添加了'Grid_Mailing.reload(); Grid_Business.reload();到「After」處理程序,修復了這個問題 – Vogel612 2013-02-15 15:29:12

回答

0

嗯,我也沒搞清楚爲什麼,但我發現如何解決:

<DirectEvents> 
    <Command OnEvent="GridCommand" Success="GridID.reload(); GridID.render();"> 
</DirectEvents> 

調用重新加載和渲染後並不一定會有所幫助,如果響應時間是高的,因爲那時盯着成功之前發射

相關問題