从数据库查询得到一个DataTable,现要在这个datatable上增加新列,列的标题为Count,新列的来源是一个string[]

解决方案 »

  1.   


    /// <summary>
    /// 构造用户信息细节表
    /// </summary>
    /// <returns></returns>
    public static DataTable getAllDetail()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("UID", typeof(System.Int32));//用户编号
        dt.Columns.Add("UserName", typeof(System.String));//用户姓名
        dt.Columns.Add("FileOver", typeof(System.Int32));//处理完的数量
        dt.Columns.Add("FileUnDeal", typeof(System.Int32));//未处理的数量
        dt.Columns.Add("FileDealing", typeof(System.Int32));//正在处理的数量
        DataTable dtUsr = UserBLL.getAll();//用户列表
        for (int i = 0; i < dtUsr.Rows.Count; i++)//这里处理
        {
            DataRow dr = dt.NewRow();
            string UID = dtUsr.Rows[i]["UID"].ToString();
            dr["UID"] = Convert.ToInt32(UID);
            dr["UserName"] = dtUsr.Rows[i]["UserName"].ToString(); ;
            dr["FileOver"] = RegFilesBLL.getTotalByUidProcess(UID, 10, 10);
            dr["FileUnDeal"] = RegFilesBLL.getTotalByUidProcess(UID, 0, 0);
            dr["FileDealing"] = RegFilesBLL.getTotalByUidProcess(UID, 1, 9);
            dt.Rows.Add(dr);
        }
        return dt;
    }//取关键代码
      

  2.   


    DataTable dt = getDataTable();
            
            dt.Columns.Add(new DataColumn("A", typeof(String)));        //循环赋值
      

  3.   

     dt.Columns.Add(new DataColumn("Count", typeof(String)));
      

  4.   


    DataTable table = new DataTable ();  //创建table的第一列
    DataColumn priceColumn = new DataColumn();
    //该列的数据类型
    priceColumn.DataType = System.Type.GetType("System.Decimal");
    //该列得名称
    priceColumn.ColumnName = "price";
    table.Columns.Add(priceColumn);
      

  5.   

    //这个dt是你的datatable,我这里演示方便直接new了一个。
    DataTable dt = new DataTable();DataColumn col = new DataColumn("新列名");
    dt.Columns.Add(col);for(int i=0;i< dt.Rows.Count;i++)
    {
        dr[i]["新列名"] = string数组[i]; //你说的数组。
    }
      

  6.   

            DataTable dt = new DataTable();
            private void Form1_Load(object sender, EventArgs e)
            {
                dt.Columns.Add("2");
                for (int i = 0; i < 20; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr[0] = "111";
                    dt.Rows.Add(dr);
                }
                dataGridView1.DataSource = dt;
            }
                   private void button1_Click(object sender, EventArgs e)
            {
                dt.Columns.Add("count");
                string[] a = new string[20];
                for (int i = 0; i < a.Length; i++)
                {
                    a[i] = i.ToString();
                }
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    dt.Rows[i][1] = a[i].ToString();
                }
                dataGridView1.DataSource = dt;
            }
      

  7.   


    你看下是不是 已经存在名称为 Count  列了
      

  8.   

    如果存储该列,在增加列之前就循环一下datatable所有列,如果存储相同名字就弹出错误信息。
      

  9.   

                DataTable dt = new DataTable();
                if (!dt.Columns.Contains("Count"))
                {
                    dt.Columns.Add("Count");
                }
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    dr[i]["新列名"] = string数组[i]; //你说的数组。
                }
      

  10.   

    错误
    无法将带 [] 的索引应用于“System.Data.DataTable”类型的表达式
      

  11.   

    DataTable dt = new DataTable();
      if (!dt.Columns.Contains("Count"))
      {
      dt.Columns.Add("Count");
      }
      for (int i = 0; i < dt.Rows.Count; i++)
      {
      dt.Rows[i]["Count"] = str[i]; //你说的数组。
      }
      

  12.   

    如果把已查询的datatable对象再去赋给另个新的datatable对象,都会出现已存在该列,可以循环读取原有table的值再赋给新的datatable对象,或者用ItemArray方法来获取也可以的