我从Excel中生成一DataTable,然后DataTable的defalutview作为datagridview的数据源,我想更改某一列的值,譬如某一列是11,15,65,...,我想把它更改成尾部全部加“A",即:11A,15A,65A...可是,不知道自动生成的datatable默认该列是数字,而无法更改。
我的代码是:
datagridview.Rows[j].Cells[i].Value = datagridview.Rows[j].Cells[i].Value.ToString() + "A";
或者dataview[j][i]=dataview[j][i].ToString+"A"
都显示更新不成功,且是数据类型的问题。
这种情况怎么办呢?

解决方案 »

  1.   

    我猜测可能是这样的:
        当通过设置DataGridView的DataSource来设置DataGridView中显示的数据时,表面上我们只是把数据填充到了不同的单元格中,但实际上DataGridView会给不同的列指定不同的类型(比如:它判断你提到的那一列值都是整数,就可能把这一列的数据类型属性设置为整型,这样当你给它们末尾加上“A”时,就等于要把一个字符串类型的值赋给一个整型变量,这就是数据类型问题了)。可能的解决办法(这是一个比较不好的方法,有点笨):
        如果可能的话从Excel文件中读取数据并把它们逐单元格地填充到DataGridView控件中(而不是设置DataGridView的DataSource属性),这样每个单元格中存储的都是一个字符串,你就可以任意操作单元格中的内容了。 呵呵,希望对你有帮助。
      

  2.   

    if(getType(datagridview.Rows[j].Cells[i].Value)==typeof(int))
    {
        //试一下这句,看一下datagridview.Rows[j].Cells[i].Value是不是int型,如果是,就不能赋string型的值.
    }
      

  3.   

    既然你都知道是数据类型问题,那你不会改一下datacolumn的数据类型吗?
    如果直接改不了,你就把他重新读入一个你已定义了数据类型的表中,
    然后再把他赋给datagrid.