#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. Все равно ужасно.