6

The error I got when I change the datasource of BindingSource

"databinding cannot find a row that is suitable for all bindings row that is suitable for all bindings"

        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 extension method work-around on perplexing "databinding cannot find a row..." error.

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

What's the meaning of "DataBinding cannot find a row..." error, if at all possible, can I eliminate my work-around on it?

bendewey
  • 39,709
  • 13
  • 100
  • 125
Hao
  • 8,047
  • 18
  • 63
  • 92

1 Answers1

3

I have seen this error when no DataGridView is involved, but my data source was being updated from another thread (naughty!) and my binding had FormattingEnabled=false. Changing both of these seemed to fix the problem.

Mark Foreman
  • 2,190
  • 18
  • 16
  • Weird, `FormattingEnabled=true` does seem to magically avoid this “Data binding cannot find a row in the list suitable for all bindings” `InvalidOperationException`. – binki Jul 10 '14 at 14:30