关于DataGridView绑定数据报错的解决方法

    最近在做Arcgis Engine二次开发时,UI上面用DataGridView绑定DataTable,只要数据一更新,就会出现一个对话框,报错内容是:

DataGridView 中发生一下异常

System.IndexOutOfRangeException:索引0没有值。
在System.Windows.Forms.CurrencyManager.get_Item(Int32index)
在System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetError(Int32 rowIndex)

要替换此默认对话框,请处理DataError事件。

    我针对这个问题改了好几次,一直没解决。一开始是建一个新的BindingSource,然后把binding绑定给DataGridView,方法如下,但是还不奏效。

                BindingSource bingding = new BindingSource();             
                bingding.DataSource = ThunderShowDR;
                bingding.ResetBindings(true);
                bingding.CurrencyManager.Refresh();
                ThunderShowdgv.DataSource = null;
                ThunderShowdgv.DataSource = bingding;//绑定数据源  

    后来发现DataGridView中有一列默认带*符号的行,这会导致DataGridView比Datatable多一行,在操作的时候会影响数据越界。最后把这行去掉即可:

ThunderShowdgv.AllowUserToAddRows = false;

问题完美解决!



    

你可能感兴趣的:(AE开发系列)