Frage

Ich würde gerne a verwenden LinqDataSource Kontrolle auf einer Seite und begrenzen Sie die Anzahl der zurückgegebenen Datensätze.Ich weiß, wenn ich Code dahinter verwende, könnte ich so etwas tun:

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

Weiß jemand, ob so etwas mit einem möglich ist? LinqDataSource Kontrolle?

[Aktualisieren]

Ich werde das verwenden LinqDataSource mit dem ListView Kontrolle, nicht ein GridView oder Repeater.Der LinqDataSource Der Assistent bietet keine Möglichkeit, die Anzahl der zurückgegebenen Datensätze zu begrenzen.Mit den erweiterten Optionen können Sie nur Löschvorgänge, Einfügungen und Aktualisierungen aktivieren.

Keine korrekte Lösung

Andere Tipps

Ich hatte das gleiche Problem.Um dies zu umgehen, habe ich das Selecting-Ereignis für die LinqDataSource verwendet und das Ergebnis manuell zurückgegeben.

z.B.

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);
}

Ja Und NEIN.

NEIN, können Sie die Ergebnisse innerhalb des LinqDataSource-Steuerelements nicht einschränken.Da Linq eine verzögerte Ausführung verwendet, wird erwartet, dass die Präsentationssteuerung die Recordset-Grenzwerte einhält.

Ja, können Sie dies mit einem ListView-Steuerelement tun.Der Trick besteht darin, das zu verwenden DataPager Kontrolle innerhalb der LayoutTemplate, etwa so:

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

Normalerweise würden Sie Steuerelemente wie „erste“, „letzte“, „nächste“ und „vorherige“ in den DataPager einbinden.Wenn Sie es jedoch einfach leer machen, werden nur die drei gewünschten Ergebnisse angezeigt.

Hoffe das hilft.

protected void DocsData_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
    e.Arguments.MaximumRows = 5;
}

Sie könnten Ihre Linq-Abfrage auf einer gespeicherten Prozedur basieren, die mithilfe einer TOP-Anweisung nur x Zeilen zurückgibt.Denken Sie daran: Nur weil Sie Ihren gesamten DB-Code in Linq ausführen können, heißt das nicht, dass Sie es auch tun sollten.Außerdem können Sie Linq anweisen, für die gespeicherte Prozedur denselben Rückgabetyp wie für die normale Tabelle zu verwenden, sodass Ihre gesamte Bindung weiterhin funktioniert und die Rückgabeergebnisse denselben Typ haben

Sie können das Ereignis Selecting von LinqDataSource setzen:

protected void ldsLastEntries_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
    e.Arguments.MaximumRows = 10;
}

Ich weiß, dass die Anzahl der zurückgegebenen Ergebnisse automatisch optimiert wird, wenn Sie einen Paging-Repeater oder Gridview mit der Linqdatasource verwenden, aber ich bin mir auch ziemlich sicher, dass Sie im Datenquellen-Assistenten zu den erweiterten Optionen gehen und diese auf beschränken können

SELECT TOP 3 FROM 

Das sollte es Ihnen ermöglichen, das zu tun, was Sie brauchen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top