Почему DataBinding не работает во второй раз? - PullRequest
5 голосов
/ 25 марта 2009

Ошибка, полученная при изменении источника данных BindingSource

"привязка данных не может найти строку, подходящую для всех строк привязок, подходящую для всех привязок"

        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;

Метод обхода метода My Helper при сбое с ошибкой «Привязка данных не может найти строку ...».

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

В чем смысл ошибки «Привязка данных не может найти строку ...», если это вообще возможно, могу ли я устранить эту проблему?

1 Ответ

3 голосов
/ 06 июня 2012

Я видел эту ошибку, когда DataGridView не задействован, но мой источник данных обновлялся из другого потока (непослушный!) И моя привязка имела FormattingEnabled = false. Изменение обоих этих параметров, похоже, решило проблему.

...