如何设置DataGridView的列汇总,如下:
我通过sql填充了一个dataset1,这个dataset1表里面有三个字段,字段1为"金额",字段2为"毛利",字段3为"毛利率",我向在dataset1里面再增加一列,
实现增加一列是比较简单,但是我是要在这一列里面进行字段2除以字段1的结果来填充,如下:
字段1  字段2  字段3  需要增加的字段
50     20    60%        ?     
60     30    60%        ?
40     12    60%        ?
合计    60               ?
就是以上的应该怎么实现,首先声明的是我不能在sql里面来处理最后一个字段,我要在程序里面来处理这个字段,
请提供详细代码!
在线等待,马上给分!

解决方案 »

  1.   

                // Unbound columns fetch data via the CellValueNeeded event
                dataGridView1.CellValueNeeded += new System.Windows.Forms.DataGridViewCellValueEventHandler(this.colAge_CellValueNeeded);
            private void colAge_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
            {
                if (e.ColumnIndex == ((DataGridView) sender).Columns["Age"].Index)
                {
                    int age;
                    DataTable Employees = dataSetAdventureWorks.Tables["Employee"];
                    DateTime birthDate = (DateTime)Employees.DefaultView[e.RowIndex]["BirthDate"];
                    age = DateTime.Today.Year - birthDate.Year;
                    // Adjust down if hasn't had this year's birthday yet.
                    if (DateTime.Today.DayOfYear < birthDate.DayOfYear)
                        age--;
                    e.Value = age;
                }
            }
      

  2.   

    上面:当 DataGridView 控件的 VirtualMode 属性为 true,并且 DataGridView 只有在单元格中有值的情况下才格式化和显示单元格时。
      

  3.   

    用代码操作datatable,加一个cloumn,然后
    在循环中完成演算动作,再把datatable绑定到dataGridView1
      

  4.   

    偶喜欢5楼的做法
    select一列然后把这列的值循环导入一个变量(sqldataReader),这样每列都可以获得一个变量,
    最后datagridview.Rows.add(所有变量)即可啊。
      

  5.   

    具体的没写过,写下思路吧
    double[] disanlie=new double[总行数];    (第三列用的变量)
    int i=0;下标
          SqlCommand cmd = new SqlCommand("select 字段1,字段2 from 表名,  con);
          SqlDataReader sdr = cmd.ExecuteReader();
          while(sdr.Read())
          {
             int di1=sdr.getInt32(0);//获得第一列的数
             int di2=sdr.getInt32(1);//获得第二列的数
             sisanlie[i]=di2/di1*100;//获得百分比(可能需要转换,但数字出来了)
             i++;//下标加1
          }      这样第三列的所有百分比就会在一个数组,然后加一列把数组的数放进去就行。
    不知道看懂没呵呵
      

  6.   

    引用13楼的:具体的没写过,写下思路吧 double[] disanlie=new double[总行数];    (第三列用的变量) 
    int i=0;下标 
          SqlCommand cmd = new SqlCommand("select 字段1,字段2 from 表名,  con); 
          SqlDataReader sdr = cmd.ExecuteReader(); 
          while(sdr.Read()) 
          { 
             int di1=sdr.getInt32(0);//获得第一列的数 
             int di2=sdr.getInt32(1);//获得第二列的数 
             sisanlie[i]=di2/di1*100;//获得百分比(可能需要转换,但数字出来了) 
             i++;//下标加1 
          }       //这样第三列的所有百分比就会在一个数组,然后加一列把数组的数放进去就行。 
    //不知道看懂没呵呵