2010-10-27 37 views
0

我打算允許用戶打開一個包含gridview和過濾器文本框的modalpopupetentender。我需要它,所以當用戶鍵入一個過濾器時,過濾器將應用到gridview,然後更新gridview的內容以反映應用的過濾器 - 所有這些都不會回發。理想情況下,gridview將按照用戶類型進行過濾,而不必按下按鈕。使用AJAX重新綁定gridview(無回發)

我猜它會利用我的SqlDataSource和UpdatePanel上的FilterParameters,但任何人都可以提供一個更徹底的解釋,我將如何做到這一點?如果我使用的代碼是'general',並且可以與任何其他GridView和DataSource一起使用,那也會很好。

感謝

回答

1

你能不能換一個UpdatePanel的GridView控件,然後在文本框的變化重新綁定帶有過濾器的數據源?

1

把gridview放在UpdatePanel中,並將TextBox放在它外面。向該面板添加一個隱藏按鈕,這是一個異步觸發器,然後將javascript onchange添加到文本框中以單擊該按鈕。

<asp:Button ID="DoRefresh" style="display:none;" UseSubmitBehavior="false" 
runat="server" OnClick="Recalculate()" /> 

在Page_Init:

myTextBox.Attributes.Add("onChange", 
"document.getElementById('" + DoRefresh.ClientID + "').click()"); 

放入重新計算()重新綁定代碼

應該這樣做。我相信有更好的方法來做到這一點,但如果你想使用服務器端的控件,如GridView,我認爲你堅持部分回發來更新它。但是,要小心,你確定每次鍵入一個字母時都要運行查詢嗎?

編輯 - 讓我補充一點,我認爲使用jQuery插件或其他客戶端解決方案與ajax,正如另一個答案所示,這樣做更有意義,然後這樣做。這實際上並不是UpdatePanel的功能,您每次鍵入一個字母時都會進行回發(儘管部分)。但回傳是告訴服務器端代碼更新頁面的唯一方法。

1

每當用戶輸入一個字母時,你都會去服務器並運行一個查詢。這可能會很快變得昂貴。你使用的是像jQuery這樣的JavaScript框架嗎?大多數框架將具有包含具有這種功能的<table>標籤的數據表。

快速谷歌搜索發現這個jQuery的:http://www.datatables.net/ (有一大堆其他的,道場和YUI有自己的也一樣)

你可以這樣做:

$(document).ready(function(){ 
    $('#<% = GridView1.ClientID%>').dataTable(); 
}); 

注,這個解決方案也有缺點,取決於數據集的大小。