在Datatable,DataView和DataGridView中不显示重复的记录

来源:互联网 发布:周杨青的淘宝店铺 编辑:程序博客网 时间:2024/05/18 02:18


DatatableDataViewDataGridView中不显示重复的记录

其中,对于直接在查询语句中使用distinct不作过多说明,主要从代码层角度实现

方法一,在加载数据的时候,对于重复的数据,选择不进行加载。
代码如下:

<span style="font-size:14px;">OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program\Database\employInfo.accdb");            conn.Open();            OleDbDataReader dr;            OleDbCommand view = new OleDbCommand("SELECT * FROM Employ", conn);            dataGridView1.Rows.Clear();            dr = view.ExecuteReader();            int ii = dataGridView1.Rows.Count;            bool isexist = false;            while (dr.Read())            {                if (dataGridView1.Rows.Count == 0)                {                    dataGridView1.Rows.Add(dr["EmployId"], dr["EmployName"], dr["EmployCompany"]);                }                else                {                    for (int i = 0; i < dataGridView1.Rows.Count; i++)                    {                        if (dataGridView1.Rows[i].Cells["EmployId"].Value.ToString() == dr["EmployId"].ToString()                        && dataGridView1.Rows[i].Cells["EmployName"].Value.ToString() == dr["EmployName"].ToString()                            && dataGridView1.Rows[i].Cells["EmployCompany"].Value.ToString() == dr["EmployCompany"].ToString())                        {                            isexist=true;                            break;                        }                                            }                    if (!isexist)                    {                        dataGridView1.Rows.Add(dr["EmployId"], dr["EmployName"], dr["EmployCompany"]);                                            }                    isexist = false;                }            }            dr.Close();            conn.Close();</span>

方法二.在现有的Datatable中去重,.net2.0提供了一个非常有效的方法DataView.ToTable 方法
具体代码如下:
 OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program\Database\employInfo.accdb");            conn.Open();            OleDbDataReader dr;            OleDbCommand view = new OleDbCommand("SELECT * FROM Employ", conn);            dataGridView1.Rows.Clear();            dr = view.ExecuteReader();            int ii = dataGridView1.Rows.Count;            bool isexist = false;            while (dr.Read())            {                dataGridView1.Rows.Add(dr["EmployId"], dr["EmployName"], dr["EmployCompany"]);            }            dr.Close();            conn.Close();                        DataTable dt = new DataTable();            OleDbDataAdapter da = new OleDbDataAdapter();            da.SelectCommand = view;            da.Fill(dt);            DataTable dtnew = dt.DefaultView.ToTable(true);            dataGridView2.DataSource = dtnew;//dtnew and dt both are DataTable
关于DataView.ToTable 方法可以参照如下链接:
http://msdn.microsoft.com/zh-cn/library/wec2b2e6(v=vs.110).aspx
0 0
原创粉丝点击