天天看点

DataGridView增加统计行

private DataTable dtshowdata()
        {
            string sql = "select DJBH 单据编号,WLMC 物料名称,YSCH 车牌号,GYS 客户,ZT 是否出厂,KCCZ 空车重,ZCCZ 重车重,JZ 净重,KZ 扣重,SJZL 实重,RQdate 写卡日期,RQtime 写卡时间,First 过磅号, ZCdtime 进厂称重时间,Second 过磅号,KCdtime 出厂称重时间,KZdtime 扣重时间,ZDR 制卡人,HYdtime 化验时间,HYDH 化验单号, CH 仓号,HYS 化验人,TYR 同意出厂人,BZ 备注 from YCLTable";
            if (con.State.ToString() == "Open")
                con.Close();
            con.Open();
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            DataTable dt = new DataTable();
            da.Fill(dt);
            con.Close();
            return dt;
        }
        private DataTable dtstaticdata()
        {
            DataTable dt = dtshowdata();
            DataRow dr = dt.NewRow();
            dr[4] = "统计";
            dr[5] = dt.Compute("Sum(净重)", null);//无效的聚合函数 Sum()和类型 String 的用法 数据库中的数据类型必须是数字
          //  dr[2] = dt.Compute("Sum(数学)", null);//求平均数avg;
            dt.Rows.Add(dr);
            return dt;
        }

        private void Smot() //锁定统计行 不让排序
        {
            dataGridView1.Columns[dataGridView1.Columns.Count - 1].SortMode = DataGridViewColumnSortMode.NotSortable;

          //  for (int i = 0; i <= dataGridView1.Columns.Count - 1; i++)//如果想让统计置顶 可以去掉=号;就可以选择置顶
        //    {
         //       dataGridView1.Columns[dataGridView1.Columns.Count - 1].SortMode = DataGridViewColumnSortMode.NotSortable;
         //   }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.dataGridView1.DataSource = dtstaticdata();
            Smot();
        }