2009-08-14 120 views
4

即時通訊使用實體框架1.0,並嘗試用可訪問我的外觀的objectdatasource提供Gridview。問題是,它似乎特別困難,並沒有看到任何真正做我想要它在互聯網上做的事情。Objectdatasource和Gridview:排序,分頁,過濾

對於那些知道,一個gridview與objectdatasource飼料,它不能自動排序然後你必須手動。它沒有那麼壞。它變成了一場噩夢,當我們將分頁和過濾器設置添加到gridview的數據源時。

很多時間在互聯網上搜索後,我在問你,夥計們,如果每個人都知道可以解釋我如何混合Pagging排序過濾一個GridView和一個ObjectDataSource的鏈接!

在此先感謝和抱歉我的英語。

回答

1

FINALY!經過2天的搜索,finaly找到了另一種選擇!看看這個!

http://www.unboxedsolutions.com/sean/archive/2005/12/28/818.aspx

+0

該鏈接沒有:我

myDataSource.TypeName = this.GetType().AssemblyQualifiedName; 

然後我使用的是同一個頁面上的靜態方法(在同一個類)來更新gridview的設置,在代碼中,在我的Page_Load在工作,在忙。恥辱因爲我想知道如何做到這一點。你有關於這個西蒙的任何信息嗎?歡呼 – Andez 2012-08-10 10:45:42

5

它可能不再是你的興趣,但我想我還是後一個答案:

我使用LINQ2SQL和ObjectDataSource控件和它分頁和排序非常好。

我實現了一個用作ObjectDataSource的類。它有一個Select和Count方法調用我的業務層,它使用Linq2SQL查詢從數據庫檢索數據,應該與EntityFramework類似。 select方法自動獲取第一項索引,頁面大小和排序表達式作爲參數。

public List<EntityClass> Select(int startIndex, int pageSize, string sortBy) {} 
public int Count() {} 

在ASPX,數據源被構造成這樣的:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
    SelectMethod="Select" EnablePaging="true" 
    StartRowIndexParameterName="startIndex" 
    MaximumRowsParameterName="pageSize" 
    SortParameterName="sortBy" SelectCountMethod="Count" > 
</asp:ObjectDataSource> 

的選擇和計數方法使用LINQ查詢來檢索從DB中的數據。我使用Skip(),Take()Orderby()方法。爲了OrderBy接受一個字符串排序表達式,我使用DynamicLinq沒有太多的代碼,數據綁定,分頁和排序自動工作。

如果您有興趣,我可以發佈我的代碼的更多細節。

+0

是的,在這個方向我們決定去。但是,我有興趣知道是否有辦法像SQL數據源那樣擁有我們不需要做的工作。我不知道該怎麼說,但是我的「頭腦程序員」發現它在Studio 2010 LLBL Gen中的實體4是非常強大的,排序,分頁和查詢效率更高,並且花費很少的重新安裝,它包括強大的排序/分頁功能在返回所有數據之前與數據庫進行交互的方法。但是,謝謝彼得!也許我應該展示一些查詢,當我們要完全實施! – 2010-06-14 12:30:56

0

我知道這是一個古老的問題,但以下是我如何處理這個問題。添加一個ObjectDataSource到我的aspx頁面:

<asp:ObjectDataSource ID="myDataSource" runat="server" 
    SelectMethod="GetSearchResults" EnablePaging="true" 
    StartRowIndexParameterName="startIndex" 
    MaximumRowsParameterName="pageSize" 
    SortParameterName="sortBy" SelectCountMethod="GetSearchCount" > 
</asp:ObjectDataSource> 

請注意,它缺少一個Type?

public static int GetSearchCount() 
{ 
    return _RowCount;//set elsewhere in code - this is the total number of rows for the query 
} 

public static DataTable GetSearchResults(string sortBy, int pageSize, int startIndex) 
{ 
    //Code to dynamically generate SQL statements based on supplied parameters 
    //then return a datatable containing only the data to be shown in the gridview 
}