清除Datagridview中的重复项

时间:2013-04-08 14:57:59

标签: c# datagridview duplicates

我搜索了Stack Overflow这个问题。但我发现了几个类似的问题,但显示出不同的解决方案。

我想在datagridview中显示数据而不重复。我不知道它是如何重复的。

conn.Open();
            query = "SELECT Books.BookID,Books.Title,Books.AuthorID,Authors.AuthorName,Books.ISBN from Books,Authors";
            cmd = new SqlCommand(query, conn);
            dr = cmd.ExecuteReader();

            while (dr.Read())               
            {
                dataGridView1.Rows.Clear();
               dataGridView1.Rows.Add(dr[0].ToString(), dr[1].ToString(), dr[2].ToString(), dr[3].ToString(), dr[4].ToString());
            }
            cmd.Dispose();
            conn.Close();

我想要发生什么:

  

BookID | BookTitle |等。

     

100001 |社会学|等等。
   100002 |历史|等。

这是每次都显示的数据网格

  

BookID | BookTitle |等。

     

100001 |社会学|等等。
  100002 |历史|等等。
  100001 |社会学|等等。
  100002 |历史|等。

3 个答案:

答案 0 :(得分:2)

更改您的查询以从数据库中提取DISTINCT条记录,然后将它们绑定到datagridview

 query = "SELECT DISTINCT Books.BookID,Books.Title,Books.AuthorID,Authors.AuthorName,
          Books.ISBN from Books,Authors";

注意:  如果有任何列具有不同的值,则此查询将使行不同。因此,您想要显示哪个列的值并希望在网格上显示,这取决于您。

还有一件事,如果可能的话,使用JOIN代替笛卡尔积,

query = "SELECT DISTINCT Books.BookID,Books.Title,Books.AuthorID,Authors.AuthorName,
         Books.ISBN from Books 
         LEFT OUTER JOIN Authors on Books.AuthorId=Author.AuthorId";

编辑:尝试使用此绑定

using(SqlReader reader = cmd.ExecuteReader() )
     {
        if (reader.HasRows)
        {  
            DataTable dt = new DataTable();
            dt.Load(reader);
            dataGridView1.DataSource = dt;
        }
     }

答案 1 :(得分:2)

试试这个

conn.Open();
query = "SELECT Books.BookID,Books.Title,Books.AuthorID,Authors.AuthorName,Books.ISBN from Books,Authors";
cmd = new SqlCommand(query, conn);

SqlDataAdapter da = new SqlDataAdapter(cmd);

dataGridView1.Clear();

da.Fill(dataGridView1);

cmd.Dispose();
conn.Close();

不确定这是否完全正确,但可能有所帮助。

答案 2 :(得分:1)

您需要更改查询才能使用DISTINCT,因为这会删除重复项:

SELECT DISTINCT Books.BookID,Books.Title,Books.AuthorID,Authors.AuthorName,Books.ISBN from Books,Authors