Как я могу найти больше столбцов в DataGridView на C#

#c# #sql #visual-studio-code #datagridview #datagridviewcolumn

Вопрос:

Я хочу найти больше столбцов в представлении DataGrid. Я могу выполнить поиск только по названию продукта, но я также хочу выполнить поиск по названию бренда и категории. Как я могу этого достичь?

Вот мой код:

  public void LoadProducts()
    {
        int i = 0;
        dataGridView1.Rows.Clear();
        cn.Open();
        cm = new SqlCommand("select p.pcode, p.barcode, p.pdesc, b.brand, c.category, p.price1, p.price2, p.qty from tblproduct as p inner join tblbrand as b on b.id = p.bid inner join tblcategory as c on c.id = p.cid where p.pdesc like '"   txtSearch.Text   "%' order by p.pdesc", cn);
        dr = cm.ExecuteReader();
        while (dr.Read())
        {
            i  ;
            dataGridView1.Rows.Add(i, dr[0].ToString(), dr[1].ToString(), dr[2].ToString(), dr[3].ToString(), dr[4].ToString(), dr[5].ToString(), dr[6].ToString(), dr[7].ToString());
        }
        dr.Close();
        cn.Close();
    }
 

Комментарии:

1. Пожалуйста, не создавайте SQL — запросы таким образом. Вам нужно их параметризовать.

2. Говоря о SQL, вы, возможно, захотите ознакомиться с некоторыми вводными руководствами. По сути, вы спрашиваете, как добавить условия в предложение where, что тривиально.

3. Возможно, вы также захотите изучить лучшие способы использования DGV — вставлять в него строки, строка за строкой-далеко не лучший способ его использования. ключевое слово: источник данных

4. Спасибо за ваши комментарии….:)

5. Кроме того, вы должны утилизировать свое соединение, команду и считыватель с using помощью , вы не должны кэшировать свой объект подключения

Ответ №1:

После тщательного исследования я, наконец, нашел решение:

 public void LoadProducts()
    {
        int i = 0;
        dataGridView1.Rows.Clear();
        cn.Open();
        cm = new SqlCommand("select p.pcode, p.barcode, p.pdesc, b.brand, c.category, p.price1, p.price2, p.qty from tblproduct as p inner join tblbrand as b on b.id = p.bid inner join tblcategory as c on c.id = p.cid where p.pdesc like '"   txtSearch.Text   "%' or b.brand like '"   txtSearch.Text   "%' or c.category like '"   txtSearch.Text   "%' order by p.pdesc", cn);
        dr = cm.ExecuteReader();
        while(dr.Read())
        {
            i  ;
            dataGridView1.Rows.Add(i, dr[0].ToString(), dr[1].ToString(), dr[2].ToString(), dr[3].ToString(), dr[4].ToString(), dr[5].ToString(), dr[6].ToString(), dr[7].ToString());
        }
        dr.Close();
        cn.Close();
    }
 

Комментарии:

1. Все равно ужасно.