如有列名为FemaleRanges的列(上线限),
我想将它的值设置为另外两列(上限列和下限列)的值合并
笨办法就是for循环遍历
有没有更好的办法??   private void dgvCheckItem_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (dgvCheckItem.Columns[e.ColumnIndex].Name.Equals("FemaleRanges") && e.Value is string)
            {
int rindex = e.RowIndex;
                dgvCheckItem.Rows[rindex].Cells["FemaleRanges"].Value = dgvCheckItem.Rows[rindex].Cells["RangeMin"].Value.ToString() + "-" + dgvCheckItem.Rows[rindex].Cells["RangeMax"].Value.ToString();
            }
         }
这样子不行,直接报错
错在哪里??

解决方案 »

  1.   

    报错应该是格式不一致,  你的FemaleRanges列在数据库中如果不是字符串类型的那么操作肯定会报错。想合并,那就在查询的时候,在sql里做也可以啊。
      

  2.   

     for (int i = 0; i < dgvCheckItem.Rows.Count-1; i++)
                {
                    dgvCheckItem.Rows[i].Cells["FemaleRanges"].Value = dgvCheckItem.Rows[i].Cells["RangeMin"].Value.ToString() + "-" + dgvCheckItem.Rows[i].Cells["RangeMax"].Value.ToString();
                }
    这样子是可以的,实在不行的话只能写在sql语句里了
      

  3.   

    “System.StackOverflowException”类型的未经处理的异常出现在 System.Windows.Forms.dll 中。
    当前线程处于堆栈溢出状态,因此无法计算表达式的值。}
    确保你没有处于无限递归
      

  4.   

    private void dgvCheckItem_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                if (e.rowIndex > -1 && dgvCheckItem.Columns[e.ColumnIndex].Name.Equals("FemaleRanges") && e.Value is string)
                {
    int rindex = e.RowIndex;
                    dgvCheckItem["emaleRanges",rindex].Value = dgvCheckItem["RangeMin",rindex].Value.ToString() + "-" + dgvCheckItem["RangeMax",rindex].Value.ToString();
                }
             }这样应该没问题的,如果有,那可能就是RangeMin,RangeMax列出现空值