6 votes

Pourquoi DataBinding ne fonctionne pas la deuxième fois ?

L'erreur que j'ai obtenue lorsque j'ai changé la source de données de BindingSource

"La liaison de données ne peut pas trouver une ligne qui convient à toutes les liaisons ligne qui convient à toutes les liaisons"

        this.RemoveAllBindings(); // My work-around for the meantime

        bdsOrder.DataSource = _ds.Tables["orders"]; // errors here on second time around(first time is blank datatable, second time is when i open existing record, then it errors), dataset comes from Remoting
        bdsOrderDetail.DataSource = _ds.Tables["order_detail"];

        bdsPhoto.DataSource = _ds.Tables["order_photo"];
        bdnPhoto.BindingSource = bdsPhoto;

La méthode d'extension My Helper permet de contourner l'erreur "databinding cannot find a row...".

namespace MycComponentExtension
{
    public static class Helper
    {
        public static void RemoveAllBindings(this Form form)
        {
            RemoveAllBindings((Control)form);
        }

        private static void RemoveAllBindings(this Control root)
        {
            foreach (Control c in root.Controls)
            {
                if (c.Controls.Count > 0) RemoveAllBindings(c);

                root.DataBindings.Clear();
            }
        }

Quelle est la signification de l'erreur "DataBinding cannot find a row...", si possible, puis-je éliminer mon contournement de l'erreur ?

3voto

Mark Foreman Points 616

J'ai vu cette erreur quand aucune DataGridView n'était impliquée, mais ma source de données était mise à jour à partir d'un autre fil de discussion (vilain !) et ma liaison avait FormattingEnabled=false. Le changement de ces deux éléments a semblé régler le problème.

0voto

Adam Robinson Points 88472

Vous devrez fournir un peu plus de détails... quels sont les types concrets des variables que vous avez dans votre fonction ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X