J'ai une grille de données qui a un jeu de données pointant vers un objetDataSource. L'ObjectDataSource pointe vers une méthode qui renvoie une linq iquéry à l'aide du typename, de SelectMethod et de SelectCountMethIs propriétés du contrôle ObjectDataSource. Ce qui se passe, c'est que les données se chargent correctement. Toutefois, sur le post-plan, si je retire les lignes de la grilleView et essayez de rebondir à l'aide du réseau explicite de GridView.DataBind (), cela ne fonctionne pas. Je sais que Linq renvoie la bonne rangée et telle que j'ai appelé le comtéMethod et qu'il retourne la bonne rangée. Voici un exemple rapide: J'ai essayé d'ajouter un bouton et d'ajouter le testGridView.databind (); méthode à cela. J'ai essayé de l'ajouter à l'événement Page_PRerender. Peu importe ce que j'essaye, cela ne fonctionne pas. P> Comme une personne suggérée ci-dessous, j'ai essayé aussi de le déplacer vers page_load et non. Voici un exemple approximatif de mon code: P> protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// Set "initial" query parameters, then ...
BindData();
}
}
private void BindData()
{
// EDITED: Removed the code below since I'm not looking to delete the
// rows from the database, but rather get the GridView to rebind
// which its not.
////Remove all current rows from the GridView
//int colCount = TestGridView.Rows.Count;
//for (int x = 1; x <= colCount; x++)
//{
// TestGridView.DeleteRow(x);
//}
// Bind GridView to the ObjectDataSource
TestGridView.DataBind();
}
protected void RegenerateImageButton_Click(object sender, ImageClickEventArgs e)
{
// Set "updated" query parameters, then ...
BindData();
}
6 Réponses :
idée stupide, mais avez-vous vérifié l'événement de la page de page avec le de ASP.NET Page Framework Aperçu : P>
page_load: strong> Lors de cet événement, vous pouvez effectuer une série d'actions pour créer votre page ASP.NET pour la première fois ou réagir aux événements côté client résultant d'un poste. L'état de la page et du contrôle ont été restaurés avant cet événement. Utilisez la propriété où comme p>
page_PRérender: strong> L'événement du prélendeur est tiré juste avant que l'état d'affichage soit enregistré et que les contrôles sont rendus. Vous pouvez utiliser cet événement pour effectuer toutes les opérations de dernière minute sur vos commandes. P>
blockQuote>
en effet p>
Parce que le framework de page est un modèle apatride a et déconnecté, chaque fois qu'un client demande une page .aspx, de nombreuses choses se produisent pendant le traitement de la page ... P>
blockQuote>
Afin en effet, vous pouvez effectuer votre vérification avant que la visualisation soit définie plutôt qu'après la restauration de la visualisation. L'endroit le plus courant à vérifier pour si (! Page.Ispospostback) CODE>? P>
si (! Page.ispospostback) code> est typiquement dans l'événement Page_Load. P>
Ouais. Regardez ci-dessous le code exemple ci-dessus: "J'ai essayé d'ajouter un bouton et d'ajouter le testGridView.databind (); méthode à cela. J'ai essayé de l'ajouter à l'événement de page_PRerender. Peu importe ce que j'essaie, ça ne marche pas."
Votre exemple montre mais avez-vous vraiment voulu dire p> (et est-ce le problème?) p> < / p>
J'ai eu un problème similaire avec une liaison dynamique d'une arborescence à un xmldatasource qui a changé la source XML sur chaque poteau. Réglage de l'entableCache à False Fixe. Avez-vous essayé cela? (Considérez l'objet LINQ2SQL déjà en caches, si votre iQuiserable utilise un objet LINQ2SQL, c'est-à-dire)
protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); BindData(); }
Merci, mais je pense que je l'ai eu. Problème totalement indépendant.
Après avoir examiné le code derrière un peu plus, j'ai trébuché sur les valeurs de propriété de la page étant stockées dans ViewState. Une fois que j'ai changé à la session, ils travaillent. P>
Si vous expliquez que dans un peu plus de détails, je serai tenté de +1 votre solution. ;)
Gridviews ne sont pas reliées sur le post-plan-retours, leurs lignes sont retirées de la vieilleté. Réinitialisation du jeu de données de GridView sur l'ID de source de données d'objet à la page Charger (ou init?) Entraînera le rebond de la grille. P>
Très bonne explication, mais si le problème est le point de vue de la vue, la bonne façon de résoudre est d'ajouter Activerviewstate = "False" à votre GridView.
Pour être clair, le jeu de données de la grille doit être réglé sur NULL afin qu'il puisse être rétabli.
J'ai eu une situation similaire dans laquelle les valeurs mises à jour d'une rangée n'ont pas montré que je n'ai pas essayé de savoir comment j'ai essayé de la base de données après la mise à jour.
Le Activer GridView code> était lié à un
ObjectDataSource code> et le problème est survenu après avoir commuté son objet de support à partir d'un fichier de données code> à un document
cadre d'entité code> requête p>
Viewstate < / Code> pour le
GridView CODE> Est-ce que l'astuce m'a fait, donc: p>