Domanda

Vorrei utilizzare un LinqDataSource controllo in una pagina e limitare il numero di record restituiti.So che se uso il codice dietro avrei potuto fare qualcosa di simile a questo:

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

Qualcuno sa se è possibile una cosa così con un LinqDataSource di controllo?

[Aggiornamento]

Ho intenzione di utilizzare la LinqDataSource con il ListView di controllo, non una GridView o Ripetitore.Il LinqDataSource guidata non fornisce la possibilità di limitare il numero di record di ritorno.Le opzioni Avanzate consentono solo abilitato elimina, inserti e gli aggiornamenti.

Nessuna soluzione corretta

Altri suggerimenti

Ho avuto questo stesso problema.Il modo in cui ho avuto tutto questo è stato quello di utilizzare la Selezione di eventi sul LinqDataSource e restituire il risultato manualmente.

ad es.

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

e No.

No, non è possibile limitare i risultati all'interno del controllo LinqDataSource.Linq utilizza esecuzione differita, l'aspettativa è che il comando di presentazione farà il recordset limiti.

, si può fare questo con un controllo ListView.Il trucco è quello di utilizzare la DataPager di controllo interno della LayoutTemplate, in questo modo:

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

Normalmente, si dovrebbe includere i controlli all'interno di DataPager come primo, ultimo e il precedente.Ma se è proprio vuoto, poi si vedrà solo tre risultati che desiderate.

Spero che questo aiuta.

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

È possibile basare la query Linq su una stored procedure che restituisce solo x il numero di righe utilizzando un SUPERIORE istruzione.Ricorda, solo perché si può fare tutto il vostro DB codice Linq non significa che si dovrebbe.Inoltre, si può dire Linq per utilizzare lo stesso tipo di ritorno per la stored proc come la normale tabella, in modo che tutti i tuoi associazione continua a funzionare, e la restituzione dei risultati sarà lo stesso tipo di

Si può mettere l'evento di Selezione di LinqDataSource:

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

So che se si utilizza un ripetitore di paging o gridview con il linqdatasource ottimizzerà automaticamente il numero di risultati restituiti, ma sono anche abbastanza sicuro che in origine una procedura guidata che si può andare su opzioni avanzate e limitare

SELECT TOP 3 FROM 

che dovrebbe consentire di fare ciò che è necessario

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top