DataGridView1中的数据源是由两部分组成的:记录列表+合计;;现在,点击DataGridView1标题列,排序,要只排记录列表,合计行仍然在最后一行

解决方案 »

  1.   

    本帖最后由 bdmh 于 2012-07-05 16:28:27 编辑
      

  2.   

    合计行可以放在列表外面用lable显示
      

  3.   


    现在就是要把合计显示在DataGridView1的最后行,不能用lable显示
      

  4.   

    合计行可以放在列表外面用lable显示
      

  5.   

    是这样解决的(参考别人的):
     public partial class Form1 : Form
        {
                DataTable dt = new DataTable();
            public Form1()
            {
                InitializeComponent();            dt.Columns.Add("id");
                dt.Columns.Add("code");
                dt.Columns.Add("name");
                dt.Columns.Add("re");
                dt.Columns.Add("autoid");            for (int i = 0; i < 10; i++)
                {
                    dt.Rows.Add(dt.NewRow());
                    dt.Rows[dt.Rows.Count - 1]["id"] = (10 + i).ToString();
                    dt.Rows[dt.Rows.Count - 1]["code"] = (100- i).ToString();
                    dt.Rows[dt.Rows.Count - 1]["name"] = "dd";
                    dt.Rows[dt.Rows.Count - 1]["re"] = "gg"+i.ToString();
                    dt.Rows[dt.Rows.Count - 1]["autoid"] = "0";
                }
                double iSum=0;
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (dr["code"].ToString() != "")
                        {
                            iSum += Convert.ToDouble(dr["code"]);
                        }
                    }
                }
                dt.Rows.Add(dt.NewRow());
                dt.Rows[dt.Rows.Count - 1]["code"] = iSum.ToString();
                dt.Rows[dt.Rows.Count - 1]["autoid"] ="1";
                dataGridView1.DataSource = dt;
                dataGridView1.Columns["autoid"].Visible = false;
            }        string m_order = " ASC ";
            private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
            { 
                dt.DefaultView.Sort = " AutoID ASC, " + dataGridView1.Columns[e.ColumnIndex].Name.ToString() + m_order;
                if (m_order == " ASC ")
                {
                    m_order = " Desc ";
                }
                else
                {
                    m_order = " ASC ";
                }
            }        
        }