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



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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值