Dert :
Web formumda bir adet update panel bulunuyor. Ve içinde grid kontrolüm var. Grid kontrolümdeki satırlara tıkladığımda pop-up pencerede satırın detay bilgilerini kullanıcıya sunuyorum. Kullanıcı pop-up pencerede değişiklik yapıp kaydet tuşuna bastığında pop-up pencerem kapanıyor. Kapanma olayıyla birlikte ana sayfamda bir javascript fonksiyonu tetikleniyor. Update Panel'imin içinde yer aalan gridimi refresh edip (sayfa postback olmadan) değişiklikleri görebilmek için nasıl bir yöntem izlemeliyim?
Derman :
Senaryomuzda yer alan soruna alakalı şöyle bir çözüm geliştirdim;
Evvela UpdatePanel'imizin yeniden yüklendiğinde hangi kodları çalıştıracağını yazıyoruz. UpdatePanel'in Load olayına kodlarımızı yazıyoruz;
protected void UpdatePanel1_Load(object sender, EventArgs e)
{
rgStockList.DataSource = new StockLogic(base.CompanyId).GetStockList();
rgStockList.DataBind();
}
Sonra javascript kodlarımıza geçiyoruz ve tetiklenecek yacascript fonsiyonu içinde günümüzün kahramanı __doPostBack()
fonksiyonunu kullanarek update panelimizin içeriğinin server tarafından tekrar render edilmesi talebinde bulunuyoruz.
function OnClientClose() {
__doPostBack('UpdatePanel1', '');
return false;
}
Kaynak
//Codebehind tarafında javascriptimizi oluşturacak fonksyon
public void CreateMessageAlertInUpdatePanel(UpdatePanel up, string strMessage)
{
string strScript = "alert('" + strMessage + "');";
Guid guidKey = Guid.NewGuid();
ScriptManager.RegisterStartupScript(up, up.GetType(), guidKey.ToString(), strScript, true);
}
// Kullanımı
CreateMessageAlertInUpdatePanel(Me.UpdatePanel1, "Merhaba")