Как устранить повторяющиеся значения из ячеек DataGridview в C # - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь удалить или пустое значение в моем 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();
    }

После con.close() мой код должен удалить дублирующую ячейку и поставить пустое значение.

Мне нужна помощь.

Я использую Ссылку на видео, чтобы попробовать

Я использую ToString(), потому что DataGridView не имеет свойств Text

Спасибо.

1 Ответ

0 голосов
/ 21 декабря 2018

Лучше обрабатывать дубликаты в вашем SQL-запросе.

Кроме того, имейте в виду, что очень опасно использовать конкатенацию строк в генерации SQL-запросов, поскольку она открыта для атак SQL-инъекций.Вместо этого используйте параметризованные запросы.

Если вы настаиваете на удалении дубликатов на уровне DataTable, то я предлагаю вам взглянуть на Ответ Рэтти

Вот фрагмент кода из сообщения Рэтти

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...