winform dataGridView 點擊列標題排序


winform手動綁定數據后,點擊列標題不能實現自動排序,苦苦尋找方法,發現下面的是可行的。

 

//建立DataTable將當前dataGridView中的數據讀進DataTable中

        public DataTable dvtodt(DataGridView dv)
        {
            DataTable dt = new DataTable();
            DataColumn dc;
            for (int i = 0; i < dv.Columns.Count; i++)
            {
                dc = new DataColumn();
                dc.ColumnName = dv.Columns[i].HeaderText.ToString();
                dt.Columns.Add(dc);
            }
            for (int j = 0; j < dv.Rows.Count; j++)
            {
                DataRow dr = dt.NewRow();
                for (int x = 0; x < dv.Columns.Count; x++)
                {
                    dr[x] = dv.Rows[j].Cells[x].Value;
                }
                dt.Rows.Add(dr);
            }
            return dt;
        } 

 

 

調用方法:

 

        private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            //取得點擊列的索引
            int nColumnIndex = e.ColumnIndex;
            DataTable d = dvtodt(dataGridView1);
            if (SortOrder_ == 0)    //程序開始定義   private int SortOrder_=0;
            {
                d.DefaultView.Sort = this.dataGridView1.Columns[nColumnIndex].Name + " ASC";    //指定升序排列
                SortOrder_ = 1;
            }
            else
            {
                d.DefaultView.Sort = this.dataGridView1.Columns[nColumnIndex].Name + " desc";   //再次點擊變爲降序排列
                SortOrder_ = 0;
            }
            dataGridView1.Columns.Clear();
            dataGridView1.DataSource = d;

        }

 

 

已實現雙向排序


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM