DataGridView RowValidation错误

时间:2011-04-27 11:44:25

标签: c# winforms datagridview dataset

我使用非常奇怪的方式将我的数据从Grid同步到DataBase:

例如:

#region Line methods
private void LinesView_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
{
    lineTableAdapter.Update(fRIIBDataSet.Line);
}

private void LinesView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    lineTableAdapter.Update(fRIIBDataSet.Line);
}

private void LinesView_RowValidated(object sender, DataGridViewCellEventArgs e)
{
    lineTableAdapter.Update(fRIIBDataSet.Line);
}
#endregion

但是当我将一些列切换到ComboBox时,我需要在Update之前做一些技巧:

private void dataGridView1_RowValidated(object sender, DataGridViewCellEventArgs e)
{
    //deltaTableAdapter.Update(fRIIBDataSet.Delta); TODO
}

private void dataGridView1_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
{
    deltaTableAdapter.Update(fRIIBDataSet.Delta);
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (lambdacat != null)
    {
        string selected = (LimView.Rows[e.RowIndex].Cells[1] as DataGridViewComboBoxCell).FormattedValue.ToString();
        if (selected != "")
        {
            int find = Array.IndexOf(dict, dict.Where(x => x == selected).FirstOrDefault());
            LimView.Rows[e.RowIndex].Cells[0].Value = dictiddarray[find];
            //deltaTableAdapter.Update(fRIIBDataSet.Delta);
        }
    }
    //deltaTableAdapter.Update(fRIIBDataSet.Delta);
}
取消注释Update方法后出现问题。

当我打开带有表格的窗口时,我收到了错误消息:损坏了内部索引DataTable:“5。”如何修复/避免此错误?

1 个答案:

答案 0 :(得分:1)

是否将其修改为此工作?

 if (selected != "")
    {
        int find = Array.IndexOf(dict, dict.Where(x => x == selected).FirstOrDefault());
        LimView.Rows[e.RowIndex].Cells[0].Value = dictiddarray[find];
         fRIIBDataSet.Delta.BeginInit(); //
         deltaTableAdapter.Update(fRIIBDataSet.Delta);
         fRIIBDataSet.Delta.EndInit();
    }