4

エンティティフレームワーク1.0を使用していて、ファサードにアクセスできるobjectdatasourceを使用してGridviewをフィードしようとしています。問題は、それが特に難しいようで、インターネット上で私がやりたいことを実際に行うものを見たことがないということです。

objectdatasourceでフィードされたグリッドビューを知っている人は、自動的に並べ替えることができないため、手動で並べ替える必要があります。それは悪いことではありません。悪夢になるのは、グリッドビューのデータソースにページングとフィルターの設定を追加するときです。

インターネットで何時間も検索した後、グリッドビューとオブジェクトデータソースのページング並べ替えフィルタリングを組み合わせる方法を説明できるリンクを誰かが知っているかどうかを尋ねています。

よろしくお願いします。英語をお詫びします。

4

4 に答える 4

5

もう興味がないかもしれませんが、それでも答えを投稿すると思いました。

私はLinq2SqlとObjectDataSourceを使用していますが、ページングと並べ替えは非常にうまく機能します。

ObjectDataSourceとして使用するクラスを実装しました。これには、 Linq2SQLクエリを使用してDBからデータを取得するビジネスレイヤーを呼び出すSelectメソッドとCountメソッドがあり、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>

SelectメソッドとCountメソッドは、Linqクエリを使用してDBからデータを取得します。Skip()、Take()Orderby()メソッドを使用しています。OrderByが文字列の並べ替え式を受け入れるには、DynamicLinqを使用します。コーディングすることはあまりありません。データバインディング、ページング、および並べ替えは自動的に機能します。

興味があれば、私のコードの詳細を投稿できます。

于 2010-06-11T10:38:46.237 に答える
1

ファイナリー!2日間の検索の後、最終的に代替案が見つかりました。これを見てください!

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

于 2009-08-14T18:51:41.940 に答える
1

この説明はかなり良くて単純です:GridViewObjectDataSourceLINQページングと並べ替え

于 2011-04-17T20:10:43.770 に答える
0

これは古い質問ですが、これが私がこれを処理する方法です。ObjectDataSourceをaspxページに追加します。

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

タイプがないことに注意してください。私はそれをコードのPage_Loadで設定しています

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

次に、同じページ(同じクラス)で静的メソッドを使用して、グリッドビューを更新しています。

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
}
于 2014-04-01T21:13:34.637 に答える