35

LinqDataSourceページでコントロールを使用して、返されるレコードの量を制限したいと考えています。コードビハインドを使用すると、次のようなことができることがわかります。

IEnumerable<int> values = Enumerable.Range(0, 10);
IEnumerable<int> take3 = values.Take(3);

LinqDataSourceこのようなことがコントロールで可能かどうかは誰にも分かりますか?

[アップデート]

GridView や Repeaterではなく、コントロールLinqDataSourceと共に使用します。ウィザードには、返されるレコードの数を制限する機能はありません。詳細オプションでは、有効な削除、挿入、および更新のみが許可されます。ListViewLinqDataSource

4

6 に答える 6

24

私はこれと同じ問題を抱えていました。これを回避する方法は、LinqDataSourceでSelectingイベントを使用し、結果を手動で返すことでした。

例えば

protected void lnqRecentOrder_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
    DataClassesDataContext dx = new DataClassesDataContext();
    e.Result = (from o in dx.Orders
                where o.CustomerID == Int32.Parse(Request.QueryString["CustomerID"])
                select o).Take(5);
}
于 2008-09-15T11:02:11.640 に答える
13

はいいいえ

いいえ、LinqDataSource コントロール内で結果を制限することはできません。Linq は遅延実行を使用するため、プレゼンテーション コントロールがレコードセットの制限を行うことが期待されます。

はい、ListView コントロールでこれを行うことができます。トリックは、次のようにLayoutTemplate内でDataPagerコントロールを使用することです。

<LayoutTemplate>
  <div id="itemPlaceholder" runat="server" />
  <asp:DataPager ID="DataPager1" runat="server" PageSize="3">
  </asp:DataPager>            
</LayoutTemplate>

通常、最初、最後、次、前などのコントロールを DataPager 内に含めます。しかし、単に空にすると、希望する 3 つの結果しか表示されません。

お役に立てれば。

于 2008-08-26T03:08:30.663 に答える
5
protected void DocsData_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
    e.Arguments.MaximumRows = 5;
}
于 2012-10-24T11:35:42.477 に答える
4

TOPステートメントを使用してx行数のみを返すストアドプロシージャに基づいてLinqクエリを作成できます。LinqですべてのDBコードを実行できるからといって、そうする必要があるとは限りません。さらに、ストアドプロシージャに通常のテーブルと同じ戻り型を使用するようにLinqに指示できるため、すべてのバインディングが引き続き機能し、戻り結果は同じ型になります。

于 2008-09-15T11:21:34.353 に答える
4

LinqDataSource のイベント Selecting を配置できます。

protected void ldsLastEntries_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
    e.Arguments.MaximumRows = 10;
}
于 2011-03-16T19:46:03.983 に答える
2

linqdatasource でページング リピーターまたはグリッドビューを使用すると、返される結果の数が自動的に最適化されることはわかっていますが、データソース ウィザードで詳細オプションに移動して制限できることも確信しています。

SELECT TOP 3 FROM 

これにより、必要なことを実行できるようになります

于 2008-08-07T00:55:20.867 に答える