2011-04-27 21 views
1

的DevExpress aspxgridview與LinqServerModeDataSource或替代的用於快速過濾和排序的DevExpress aspxgridview與LinqServerModeDataSource或替代的用於快速過濾和排序

我們正在嘗試以產生結果,其中速度是prioirity的只讀網格。目前在單擊和固定頁眉/頁腳上使用一個gridview控件並進行一些自定義選擇行。數據訪問來自我們的業務層的objectdatasource或代碼綁定,數據庫是SQL Server 2008.

該計劃是購買gridview的第三方控件,並一直在DevExpress aspxgridview。我們希望能夠爲gridview數據添加屬性,篩選並快速綁定網格,並查看LinqServerModeDataSource,這可能意味着在解決方案中擁有另一種數據訪問技術,但對於任何只讀訪問技術,只有查詢我們可以輕鬆地在數據庫中進行連接和排序,但對於任何插入/更新/刪除,使用n層BLL/DAL/DTO。

有沒有人對這個計劃有任何想法。 LinqServerModeDataSource和aspxgridview可以快速顯示數據,並給出選項來將過濾器(連接/存在查詢)堆棧到我們綁定的表上,或者是否有更好的方法來完成此操作。 (我認爲我們需要編輯LinqServerModeDataSource的OnSelecting中的linq查詢)寧願不寫任何自定義ajax或HTML,並讓自定義控件執行此操作。

回答

1

當ASPxGridView綁定到LinqServerModeDataSource時,所有與數據相關的操作都在數據庫服務器上執行。在這種情況下,dataSource會向DB服務器發送很多請求,但所有這些請求都很輕,即應該快速執行並且不會導致大量數據傳遞到Web服務器。另外,我想提醒你的是,網格服務器模式的工作有一定的侷限性,他們在我們的幫助下進行了說明:

Server-side Data Management

最後,我認爲ASPxGridView在服務器模式的工作是非常快的,你最終應該試試看。但是,僅當基礎DataSource返回大量數據時才應使用服務器模式。否則,當全部在Web服務器上管理時,最好使用「經典」綁定模式。

更新

我會盡量解釋需要一個服務器模式在這一點。默認情況下,所有網格控件(標準,我們...)都會從數據庫服務器獲取所有數據到Web服務器並進行管理。例如,排序。如果數據量較小並且數據庫和Web服務器之間的連接速度很快,則此操作速度相當快,並且不需要服務器模式。從我的角度來看,5k記錄不是大數據,因此ASPxGridView的代碼應該能夠有效快速地處理它。但是,如果在Web服務器上有很多記錄需要處理,例如100k,則圖片是不同的。顯然,將100k提取到Web服務器並通過網絡傳輸它們可能會很慢。此外,數據庫服務器經過優化,可以更好地處理這些數據,並且應該管理這些數據,例如,更快地對它們進行分類。在這種情況下,將此工作傳播到數據庫服務器並獲得性能更有利。

因此,決定是否使用服務器模式必須使用的主要標準如下: 從DB服務器傳遞到Web服務器的記錄數以及管理它所需的時間。

希望,這有助於。

+0

我不認爲這些限制會適用。我們希望這個網格顯示的表格的範圍是從〜5000行開始,但有很多潛在的連接,另一個有500,000多行。只有大約100行真的需要被帶回來,這對於在這個需求中使用它還是有意義的。另外,如果數據綁定了大量的SQL連接,那麼過濾後的下一個綁定可能會加入完全不同的表,並且需要再次訪問數據庫。 – 2011-04-28 08:25:33

+0

我已經更新了我的答案... – 2011-04-28 08:57:29

+0

謝謝,大桌子很合理。當我想用5k表格填充網格時,如何使用一些連接/複雜的sql來填充網格,如果沒有獲取所需的數據,請更改爲其他表連接。它似乎是快速使用服務器模式,並在代碼中構建linq,但不知道是否有任何陷阱? – 2011-04-28 11:58:28