如何从C#中的DataGridview单元中消除重复值

时间:2018-12-21 13:15:29

标签: c# webforms

如果单元格重复,我试图在DataGridview中消除一个值或将其为空。我看到了一个示例,但在我的情况下它使用的是GridView。这是代码:

DataGridview

public void atualiza() { try { SqlConnection con = new SqlConnection(Login.conectData); con.Open(); dsFerramenta = new DataSet(); daFerramenta = new SqlDataAdapter("SELECT Ferramentas.Ferramenta_ID, Ferramentas_Terminais.Terminal_ID, Ferramentas_Grupos.Grupo_ID, Vedante_ID, Imagem, Nome_Afinação, Vedante, Observações, Data_Criação, Utilizador FROM Ferramentas "+ "JOIN Ferramentas_Terminais ON Ferramentas_Terminais.Ferramenta_ID = Ferramentas.ferramenta_ID " + "LEFT JOIN Ferramentas_Grupos ON Ferramentas_Grupos.Ferramenta_ID = Ferramentas.Ferramenta_ID " + "LEFT JOIN Ferramentas_Vedantes ON Ferramentas_Vedantes.Ferramenta_ID = Ferramentas.Ferramenta_ID " + "LEFT JOIN FormasCravação ON FormasCravação.Cravação_ID = Ferramentas.Cravação_ID " + "LEFT JOIN TipoAfinação ON TipoAfinação.Afinação_ID = Ferramentas.Afinação_ID", con); dsFerramenta.Clear(); daFerramenta.Fill(dsFerramenta, scrollVal, 100, "Ferramentas".Trim()); tabelaRelac.DataSource = dsFerramenta; tabelaRelac.DataMember = "Ferramentas"; //para organizar as colunas na tabela tabelaRelac.Columns["Terminal_ID"].DisplayIndex = 1; tabelaRelac.Columns["Grupo_ID"].DisplayIndex = 2; tabelaRelac.Columns["Vedante_ID"].DisplayIndex = 3; tabelaRelac.Columns["Vedante"].DisplayIndex = 4; tabelaRelac.Columns["Nome_Afinação"].DisplayIndex = 5; tabelaRelac.Columns["Imagem"].DisplayIndex = 6; tabelaRelac.Columns["Data_Criação"].DisplayIndex = 7; tabelaRelac.Columns["Observações"].DisplayIndex = 8; tabelaRelac.Columns["Utilizador"].DisplayIndex = 9; con.Close(); string doubleValue = tabelaRelac.Rows[0].Cells[0].ToString().Trim(); for (int i = 0; i < tabelaRelac.Rows.Count; i++) { if (tabelaRelac.Rows[i].Cells[0].ToString() == doubleValue) { string a = tabelaRelac.Rows[i].Cells[0].ToString().Trim(); a = string.Empty; } else { doubleValue=tabelaRelac.Rows[i].Cells[0].Value.ToString().Trim(); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } tabelaRelac.ClearSelection(); } 之后,是我的代码,用于消除重复的单元格并放置一个空值。

我想要一些帮助。

我使用这个Video reference to try

我使用con.close()是因为ToString()没有财产DataGridView

谢谢。

1 个答案:

答案 0 :(得分:0)

最好在SQL查询中处理重复项。

此外,请记住,在SQL查询生成中使用字符串连接非常危险,因为它很容易受到SQL注入攻击。而是使用参数化查询。

如果您坚持要在DataTable级别删除重复项,那么建议您查看Ratty's Answer

这是Ratty帖子中的代码段

public DataTable RemoveDuplicateRows(DataTable dTable, string colName)
{
   Hashtable hTable = new Hashtable();
   ArrayList duplicateList = new ArrayList();

   //Add list of all the unique item value to hashtable, which stores combination of key, value pair.
   //And add duplicate item value in arraylist.
   foreach (DataRow drow in dTable.Rows)
   {
      if (hTable.Contains(drow[colName]))
         duplicateList.Add(drow);
      else
         hTable.Add(drow[colName], string.Empty); 
   }

   //Removing a list of duplicate items from datatable.
   foreach (DataRow dRow in duplicateList)
      dTable.Rows.Remove(dRow);

   //Datatable which contains unique records will be return as output.
      return dTable;
}