Question

Ceci est un commentaire général sur les questions de travail DataBind ...

J'ai une simple page avec un GridView lié (dans le code aspx) à un ObjectDataSource.

Je peux regarder dans la fonction Select () appelée par ObjectDataSource pour voir qu'elle est appelée lors du chargement initial et lors de chaque publication. J'ai une certaine logique qui se produit lors des retours qui affecteront les données de GridView et je souhaite appeler GridView.DataBind () ultérieurement dans le message, après avoir apporté certaines modifications.

Existe-t-il un moyen d’empêcher la nouvelle liaison automatique qui se produit à chaque retour de message? Est-ce que cela signifie que je ne peux pas utiliser ObjectDataSource pour ce contrôle?

Était-ce utile?

La solution

Vous avez raison de dire que le contrôle à grain fin que vous recherchez n'est pas possible et nécessite le code suivant. Les objets de source de données d'ASP.NET ne sont qu'un problème pour le **. Vous constaterez que lorsque vous les utilisez, vous obtenez des situations comme celle-ci qui se répètent encore et encore.

Certains des problèmes que vous rencontrerez sont les suivants:

  • Non fortement typé
  • Inflexible (comme vous l'avez noté)
  • Confondre le code de présentation

J'ai commencé à faire tous les accès aux données dans le code et je n'ai pas regardé en arrière.

Autres conseils

Je me suis aussi battu avec cette liaison automatique et j'ai pensé poster ma solution ici:

  1. supprimer le " DataSourceID " depuis la page ASPX, lorsqu'il n'est pas défini, il n'y a pas de liaison automatique
  2. définissez le DataSourceID dans CodeBehind uniquement lorsque la liaison de données est requise: myGridView.DataSourceID = " MyDataSource " ;;
  3. n'appelle pas explicitement myGridView.DataBind (), la liaison de données se produit automatiquement à PreRender

Il m'a fallu un certain temps pour comprendre cela, mais maintenant tout fonctionne bien.

Contexte

J'utilise ObjectDatasource car il gère automatiquement les paginations et le tri de Gridview. J'utilise une couche de données avec Linq2SQL et utilise ses méthodes Skip () et Take () pour ne charger que la quantité de données nécessaire pour remplir une page du GridView.

Utilisation des méthodes de sélection et des méthodes de sélection de ObjectDataSource

Oui. Si vous voulez ce genre de contrôle sur le moment où la liaison de données se produit, vous devez le faire dans le code suivant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top