使用DataGridView

时间:2015-08-07 14:05:46

标签: c# for-loop datagridview stack-overflow

我有一个DataGridView从XML文件中获取所有数据,我正在尝试将特定列的所有单元格值转换为int,这是我正在使用的代码它

        for (int i = 0; i < targetTable.Rows.Count; i++)
        {
            if (!targetTable[6, i].Value.Equals(null) && !targetTable[6, i].Value.Equals(""))
            {
                targetTable[6, i].Value = int.Parse(targetTable[6, i].Value.ToString());
            }
            else
            {
                targetTable[6, i].Value = i + 1;
            }
        }

当我调试此for循环时,索引仅在0到1之间永久交替,这导致StackOverFlowException

我无法弄清楚它发生的原因,我们将非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

ORINGINAL: 我想我会在行上使用Foreach而不是做一个for,它可能有助于弄清楚奇怪行为背后的原因。

        foreach (DataGridViewRow row in targetTable.Rows)
        {
            if (!row.Cells[6].Value.Equals(null) && !row.Cells[6].Value.Equals(""))
            {
                row.Cells[6].Value = int.Parse(row.Cells[6].Value.ToString());
            }
            else
            {
                row.Cells[6].Value = row.Index + 1;
            }
        }

编辑: 给出新信息:您只想将列排序为int,可能添加自定义SortCompare事件。

链接how to sort string as number in datagridview in winforms