System.Data.DataTable table = new DataTable();
            table.Columns.Add("id", typeof(string));
            table.Columns.Add("value", typeof(int));
            table.Columns.Add("bb", typeof(string));
            for (int i = 0; i <= 10; i++)
            {
                System.Data.DataRow dRow = table.NewRow();
                dRow["id"] = "id" + i.ToString();
                dRow["value"] = i + 2;
                dRow["bb"] = i;
                table.Rows.Add(dRow);
            }            DataColumn dc = new DataColumn();
            dc.ColumnName=dc1;
            dc.Expression = "value-bb ";
            table.Columns.Add(dc);
             DataRow dr1 = aaa.NewRow();
           DataRow dr2 = aaa.NewRow();           table.Rows.InsertAt(dr1, 0);
           table.Rows.InsertAt(dr2, 1);aaa.Rows[1][“dc1”] = "123";
aaa.Rows[1][“dc1”]显示出来为什么老是空值

解决方案 »

  1.   

    我新建一个DATATABLE 然后把值COPY过去还是不能赋值给列DC1。何解啊
      

  2.   


    楼上用WINFORM编译不通过吗?需要把table.Columns.Add("bb", typeof(string)); 这列类型改成INT的
      

  3.   


     System.Data.DataTable table = new DataTable();
                table.Columns.Add("id", typeof(string));
                table.Columns.Add("value", typeof(int));
                table.Columns.Add("bb", typeof(int));
                for (int i = 0; i <= 10; i++)
                {
                    System.Data.DataRow dRow = table.NewRow();
                    dRow["id"] = "id" + i.ToString();
                    dRow["value"] = i + 2;
                    dRow["bb"] = i;
                    table.Rows.Add(dRow);
                }            DataColumn dc = new DataColumn();
                dc.Expression = "value-bb ";
                table.Columns.Add(dc); 
                DataRow dr1 = aaa.NewRow();
       DataRow dr2 = aaa.NewRow();   table.Rows.InsertAt(dr1, 0);
      table.Rows.InsertAt(dr2, 1); table.Rows[1][“dc1”] = "123";
    table.Rows[1][3] = "123";
      

  4.   

    System.Data.DataTable table = new DataTable();
    table.Columns.Add("id", typeof(string));
    table.Columns.Add("value", typeof(int));
    table.Columns.Add("bb", typeof(int));
    for (int i = 0; i <= 10; i++)
    {
        System.Data.DataRow dRow = table.NewRow();
        dRow["id"] = "id" + i.ToString();
        dRow["value"] = i + 2;
        dRow["bb"] = i;
        table.Rows.Add(dRow);
    }DataColumn dc = new DataColumn();
    dc.ColumnName = "dc1";
    dc.Expression = "value-bb ";
    table.Columns.Add(dc);
    foreach (DataRow row in table.Rows)
    {
        Console.Write("id:" + row[0].ToString() + "\t,");
        Console.Write("value:" + row[1].ToString() + "\t,");
        Console.Write("bb:" + row[2].ToString() + "\t,");
        Console.WriteLine("dc1:" + row[3].ToString());
    }
    很正常。你创建控制台程序,试试?
      

  5.   

    楼上您理解错了, System.Data.DataTable table = new DataTable();
                table.Columns.Add("id", typeof(string));
                table.Columns.Add("value", typeof(int));
                table.Columns.Add("bb", typeof(int));
                for (int i = 0; i <= 10; i++)
                {
                    System.Data.DataRow dRow = table.NewRow();
                    dRow["id"] = "id" + i.ToString();
                    dRow["value"] = i + 2;
                    dRow["bb"] = i;
                    table.Rows.Add(dRow);
                }            DataColumn dc = new DataColumn();
                dc.Expression = "value-bb ";
                table.Columns.Add(dc); 
                DataRow dr1 = aaa.NewRow();
                          DataRow dr2 = aaa.NewRow();                      table.Rows.InsertAt(dr1, 0);
                          table.Rows.InsertAt(dr2, 1);                        table.Rows[1][“dc1”] = "123";
    table.Rows[1][3] = "123";
    你用这段代码看看表TABLE里的第2行的DC1列那个单元格的值是否为123
    您可以用dataGridView试试哦
      

  6.   

    你贴个能编译的代码吧。就像我给你贴的,粘贴到方法中可以编译。你这里的aaa是什么?dc1是什么?
      

  7.   

     上面的代码有问题我乱写的没有编译下面才是对的 System.Data.DataTable table = new DataTable();
                table.Columns.Add("id", typeof(string));
                table.Columns.Add("value", typeof(int));
                table.Columns.Add("bb", typeof(int));
                for (int i = 0; i <= 10; i++)
                {
                    System.Data.DataRow dRow = table.NewRow();
                    dRow["id"] = "id" + i.ToString();
                    dRow["value"] = i + 2;
                    dRow["bb"] = i;
                    table.Rows.Add(dRow);
                }            DataColumn dc = new DataColumn();
                dc.Expression = "value-bb ";
                table.Columns.Add(dc);
                DataRow dr1 = table.NewRow();
                DataRow dr2 = table.NewRow();            table.Rows.InsertAt(dr1, 0);
                table.Rows.InsertAt(dr2, 1);
                //table.Rows[1]["dc"] = "123";
            table.Rows[1][3] = "123"; 看看代码,我新增了两行空值。在新增的两行空值对应的dc列的那个单元格也就是table.Rows[1][3]。我想手动给这个单元格赋值。问题就处在这列具有Expression 属性,死活不能赋值。
      

  8.   

    table.Rows[1][3]是公式列,是只读的。不能赋值。
    public static void TestDataTable2()
    {
        System.Data.DataTable table = new DataTable();
        table.Columns.Add("id", typeof(string));
        table.Columns.Add("value", typeof(int));
        table.Columns.Add("bb", typeof(int));
        for (int i = 0; i <= 10; i++)
        {
            System.Data.DataRow dRow = table.NewRow();
            dRow["id"] = "id" + i.ToString();
            dRow["value"] = i + 2;
            dRow["bb"] = i;
            table.Rows.Add(dRow);
        }    DataColumn dc = new DataColumn();
        dc.Expression = "value-bb ";
        table.Columns.Add(dc);
        DataRow dr1 = table.NewRow();
        DataRow dr2 = table.NewRow();    table.Rows.InsertAt(dr1, 0);
        table.Rows.InsertAt(dr2, 1);
        //table.Rows[1]["dc"] = "123";
        //table.Rows[1][3] = "123";
        foreach (DataRow row in table.Rows)
        {
            Console.Write("id:" + row[0].ToString() + "\t,");
            Console.Write("value:" + row[1].ToString() + "\t,");
            Console.Write("bb:" + row[2].ToString() + "\t,");
            Console.WriteLine("dc1:" + row[3].ToString());
        }
    }结果id:     ,value: ,bb:    ,dc1:
    id:     ,value: ,bb:    ,dc1:
    id:id0  ,value:2        ,bb:0   ,dc1:2
    id:id1  ,value:3        ,bb:1   ,dc1:2
    id:id2  ,value:4        ,bb:2   ,dc1:2
    id:id3  ,value:5        ,bb:3   ,dc1:2
    id:id4  ,value:6        ,bb:4   ,dc1:2
    id:id5  ,value:7        ,bb:5   ,dc1:2
    id:id6  ,value:8        ,bb:6   ,dc1:2
    id:id7  ,value:9        ,bb:7   ,dc1:2
    id:id8  ,value:10       ,bb:8   ,dc1:2
    id:id9  ,value:11       ,bb:9   ,dc1:2
    id:id10 ,value:12       ,bb:10  ,dc1:2
      

  9.   

     算了,我还是不用Expression 了,太麻烦了。谢谢你一直的关注