2012-10-26 24 views
1

我正在開發一個網頁,用戶可以在其中過濾數據,然後將所選內容導出爲pdf或excel。該網站正在使用ASP .NET C#。使用asp.net C#和jquery過濾數據集合

要過濾數據我已經創建了一個網頁,其中包含一個帶有框和下拉列的左欄,用戶可以輸入搜索條件,然後單擊搜索按鈕。這是很多網站包含的典型搜索/過濾功能。篩選數據後,使用asp listview顯示選擇內容。這個listview會生成一個表格。我實現了Dragtable,使用戶能夠更改此表中列的順序,並且還允許用戶選擇要顯示的列。

所以我的問題是,過濾器/搜索功能是解決後端使用ASP.NET C#,而列的選擇和重新排列完成客戶端使用jQuery。當用戶現在點擊「導出」按鈕時,除了jQuery所做的過濾之外,我還想收集由asp控件完成的過濾器,並創建該文件。這個文件應該只包含使用columnManager選擇的列,按照它們在使用拖動表進行更改後的順序。

同時使用服務器端過濾器和客戶端過濾器的最佳做法是什麼?我也考慮過放棄所有的服務器端過濾,並只使用ajax.post()將所有JSON格式的過濾器發送到服務器。 我也想讓用戶在另一次保存當前的過濾器。

更新

我已經決定放棄在服務器端和使用AJAX(的getJSON更精確),以獲得搜索結果。這樣我就不會放棄使用jQuery/js完成的列的排序和排序,我會用post-back(當然可以使用cookies'n的東西)來完成。 我也將所有的邏輯放在一個地方,並且JSON對象可以很容易地包裝/解包服務器端。不過謝謝你的回答!

+0

代碼片段將非常可觀。 –

回答

0

客戶端和服務器端在同一個地方工作並不壞。 在世界上運行的所有優秀應用程序都將這些組合在一起。

但是,我們需要看到的方法。

如果你不想要任何回傳,我會推薦使用Jquery。

如果您對往返行爲正常,請繼續使用服務器端和Ajax。

0

您的方法存在另一個問題:如果用戶先對列進行排序並對其進行過濾,會發生什麼情況?列的順序被重置。

但是,通過jQuery UI可拖動,您可以觸發ajax調用來通知服務器端代碼有關更改。您可以綁定到停止事件的函數:​​

所以我會做到以下幾點:當用戶改變了列的順序

  • 消防Ajax調用,但沒有刷新數據
  • 當用戶添加過濾器並刷新數據時觸發阿賈克斯調用

服務器端代碼始終保持最新狀態,並在必要時呈現正確的輸出。