从DataGridView获取行时间歇“index = -1”

时间:2016-06-07 20:17:10

标签: c# datagridview

这样做时:

        foreach (DataGridView currentGridView in tabControl.SelectedTab.Controls.OfType<DataGridView>())
        {

            rows = new DataGridViewRow[currentGridView.RowCount];        
            currentGridView.Rows.CopyTo(rows, 0);
            page = 0;

            printDocDetail.DocumentName = "Contact List Detailed";
            printDocDetail.Print();

        }

我经常得到这个结果:

result

这取决于跑步。对于相同的DataGridView数据,一次运行将正确返回数据,下一次将返回除第一次之外的所有index = -1。

造成这种情况的原因是什么?

P.S。使用DataGridViewRowCollection或简单的数组会产生相同的结果。

2 个答案:

答案 0 :(得分:1)

答案是通过将数据复制到新数组而不是将指针复制到数据来使用未绑定数据:

rows = currentGridView.Rows.Cast<DataGridViewRow>().ToArray();

而不是

rows = new DataGridViewRow[currentGridView.RowCount];
currentGridView.Rows.CopyTo(rows, 0);

答案 1 :(得分:-1)

转到TableAdapter。接下来,单击小箭头以编辑查询。单击ID,然后在ID属性下将AutoIncrementSeed从-1更改为1,将AutoIncrementStep从-1更改为1。将解决该问题

TableAdapter:
TableAdapter

ID:
ID

ID属性:
ID Properties

表格:
Form