我有一個用戶控件,通過彈出窗口(JQuery)顯示,該用戶控件從數據庫獲取一些數據並顯示它們(記錄的詳細信息)。如何使彈出窗口的內容只有在出現時纔會回發
問題是,這個用戶控件爲了父頁的每個回發獲取數據,即使它被隱藏了。
我不知道是否只有在出現彈出窗口時才能使其獲取其數據。
我試圖把它Panel
內側false
爲Visible
屬性,並將其更改爲true
當我打開彈出,但它還是老樣子調用的Page_Load從數據庫獲取數據!
任何想法!
我有一個用戶控件,通過彈出窗口(JQuery)顯示,該用戶控件從數據庫獲取一些數據並顯示它們(記錄的詳細信息)。如何使彈出窗口的內容只有在出現時纔會回發
問題是,這個用戶控件爲了父頁的每個回發獲取數據,即使它被隱藏了。
我不知道是否只有在出現彈出窗口時才能使其獲取其數據。
我試圖把它Panel
內側false
爲Visible
屬性,並將其更改爲true
當我打開彈出,但它還是老樣子調用的Page_Load從數據庫獲取數據!
任何想法!
當用戶激活彈出窗口並用從請求中檢索到的值填充彈出窗口時,觸發ajax請求。
有幾種方法可以解決這個問題。
1.在服務器端做所有事情。 您可以使用ajax(之前的地圖集)工具包的模式dilog。把它放在更新面板中。創建一個觸發器並在該觸發器中指定事件 - 這將是何時執行對db的調用。它只會發生一次,並且您將完全控制您何時想要做到這一點。
2.使用客戶端ajax。 我喜歡這種方式,因爲使用UpdatePanel(性能)有很多開銷。 保持jQuery UI模態對話框的完整,使用客戶端事件在打開時掛鉤它。然後,你就必須要麼做一個阿賈克斯調用一個Web服務(可以在aspx頁面內被託管),或者你可以做一個不用彷徨:
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});
或
$.get('ajax/MyDbRecord.aspx', function(data) {
$('.result').html(data);
alert('Load was performed.');
});
那麼你的aspx頁面可以簡單地:
Response.Write(MyRepository.GetDetail(q => q.ID == 1234).ToString()); Resonse.End();
當然,如果您只需要在模態對話框中將該數據顯示爲簡單的字符串,並且不需要在業務方面檢查對象。
在這裏詳細描述這兩種API的: http://api.jquery.com/jQuery.get/
現在,如果你真的想和你正在從數據庫中檢索詳細記錄做一些定製的,你可能要考慮使用的getJSON。 更多示例:
http://viralpatel.net/blogs/2009/04/jquery-ajax-tutorial-example-ajax-jquery-development.html