2011-07-07 1 views
2

Il existe une GridView et une LinqDataSource dans une page et quelques boutons dont les actions ne sont pas liées à GridView et à sa LinqDataSource. Pourquoi à chaque post-retour de ces boutons la méthode de sélection de la LinqDataSource appellera? Est-ce normal?! Ces appels db indésirables de LinqDataSource ne sont pas requis.Empêche la sélection de LinqDataSource sur chaque publication

Y a-t-il un meilleur moyen?

Répondre

4

Vous devez détacher le GridView de la source de données. Je suppose que vous avez attaché la source de données comme ceci, auquel cas, ne le faites pas de cette façon.

<asp:LinqDataSource 
    runat="server" 
    ContextTypeName="AdventureWorksDataContext" 
    TableName="Contacts" 
    ID="LinqDataSource1"> 
</asp:LinqDataSource> 

<asp:GridView 
    ID="GridView1" 
    runat="server" 
    DataSourceID="LinqDataSource1" > 
</asp:GridView> 

Il est préférable d'attacher la source de données dans votre code lorsque cela est nécessaire.

if (dataSourceNeeded == true) { 
    GridView1.DataSource = GetDataSource(); 
    GridView1.DataBind(); 
} 
+0

Oui, c'est une bonne idée. J'utilise aussi un peu de cache, aussi. – Babak

+0

Ouais, je me demandais autour de ce point et vous m'a boppé à l'envers la tête et m'a pointé correctement. – Merritt

+0

Malheureusement, apparemment mon select associé à la LinqDataSource est appelé 2x lorsque je l'accroche dans cette méthode en utilisant un RadGrid et en exportant le monde de données ... fou. – Merritt

2

parce que la grille besoin de peuplée de chaque chargement de page, vous pouvez mettre en cache datasorce à une variable et le stocker sur le côté serveur (pas viewstate)

+0

L'objet de session le fait très bien. Merci. – JanBorup

Questions connexes