Кто поможет тому денег скину. Реализовать поиск и фильтрацию. поиск без кнопки через textbox. фильтрация через combobox Запрос правильный. я вписываю оно обновляется, но остаются все товары, а через бд все нормально показывается Title = $"select * from Service where Title like '%{textBox1.Text}%' "; CSHARP Title = $"select * from Service where Title like '%{textBox1.Text}%' ";
feiserak, public partial class ControlProductList : UserControl { int ID; string Title; int Cost; int DurationInSeconds; string Description; int Discount; string MainImagePath; string Start = Environment.CurrentDirectory; public ControlProductList(int ID, string Title, int Cost, int DurationInSeconds, string Description, int Discount,string MainImagePath) { InitializeComponent(); this.ID = ID; this.Title = Title; this.Cost = Cost; this.DurationInSeconds = DurationInSeconds; this.Description = Description; this.Discount = Discount; this.MainImagePath = MainImagePath; label5.Text = Title; textBox1.Text = Description; button1.Visible = false; label1.Text = Discount + "%"; if (Discount > 0) { string g = Encoding.UTF8.GetString(new byte[] { 204, 182 }); label8.Text = (string.Join(g, $"{Cost}".AsEnumerable()).Insert(0, g)); decimal ad = (decimal.Parse(Cost.ToString()) / 100 * Discount); label9.Text = $"{Cost - ad}"; } else { label8.Text = $"{Discount}"; label9.Text = $""; } try { pictureBox1.Image = Image.FromFile(Start + $@"\Услуги школы\{MainImagePath}"); } catch { pictureBox1.Image = Image.FromFile(Start + $@"\Услуги школы\picture.jpg"); } } string[] OderData = { }; private void button3_Click(object sender, EventArgs e) { Редактирование red = new Редактирование(); red.id = ID; red.title = Title; red.Cost = Cost; red.DurationInSeconds = DurationInSeconds.ToString(); red.Discount = Discount.ToString(); red.Description = Description; red.MainImagePath = MainImagePath; this.Hide(); red.Show(); red.show(); } private void button2_Click(object sender, EventArgs e) { string connectionString = @"Data Source=DESKTOP-53JMJ9S\SQLEXPRESS;Initial Catalog=pr3;Integrated Security=True"; try { SqlConnection con = new SqlConnection(connectionString); con.Open(); DataSet ds = new DataSet(); string del = $"DELETE from Service where ID = {ID}"; SqlDataAdapter adp = new SqlDataAdapter(del, con); adp.Fill(ds); con.Close(); MessageBox.Show("Материал удалён!"); Главная fm1 = new Главная(); fm1.adm = "0000"; fm1.Show(); this.Hide(); } catch { MessageBox.Show("Ошибка при удалении!"); } } private void button4_Click(object sender, EventArgs e) { Запись_на_услугу zap = new Запись_на_услугу(); zap.id = ID; zap.title = Title; zap.DurationInSeconds = DurationInSeconds.ToString(); this.Hide(); zap.Show(); zap.show(); } } CSHARP public partial class ControlProductList : UserControl { int ID; string Title; int Cost; int DurationInSeconds; string Description; int Discount; string MainImagePath; string Start = Environment.CurrentDirectory; public ControlProductList(int ID, string Title, int Cost, int DurationInSeconds, string Description, int Discount,string MainImagePath) { InitializeComponent(); this.ID = ID; this.Title = Title; this.Cost = Cost; this.DurationInSeconds = DurationInSeconds; this.Description = Description; this.Discount = Discount; this.MainImagePath = MainImagePath; label5.Text = Title; textBox1.Text = Description; button1.Visible = false; label1.Text = Discount + "%"; if (Discount > 0) { string g = Encoding.UTF8.GetString(new byte[] { 204, 182 }); label8.Text = (string.Join(g, $"{Cost}".AsEnumerable()).Insert(0, g)); decimal ad = (decimal.Parse(Cost.ToString()) / 100 * Discount); label9.Text = $"{Cost - ad}"; } else { label8.Text = $"{Discount}"; label9.Text = $""; } try { pictureBox1.Image = Image.FromFile(Start + $@"\Услуги школы\{MainImagePath}"); } catch { pictureBox1.Image = Image.FromFile(Start + $@"\Услуги школы\picture.jpg"); } } string[] OderData = { }; private void button3_Click(object sender, EventArgs e) { Редактирование red = new Редактирование(); red.id = ID; red.title = Title; red.Cost = Cost; red.DurationInSeconds = DurationInSeconds.ToString(); red.Discount = Discount.ToString(); red.Description = Description; red.MainImagePath = MainImagePath; this.Hide(); red.Show(); red.show(); } private void button2_Click(object sender, EventArgs e) { string connectionString = @"Data Source=DESKTOP-53JMJ9S\SQLEXPRESS;Initial Catalog=pr3;Integrated Security=True"; try { SqlConnection con = new SqlConnection(connectionString); con.Open(); DataSet ds = new DataSet(); string del = $"DELETE from Service where ID = {ID}"; SqlDataAdapter adp = new SqlDataAdapter(del, con); adp.Fill(ds); con.Close(); MessageBox.Show("Материал удалён!"); Главная fm1 = new Главная(); fm1.adm = "0000"; fm1.Show(); this.Hide(); } catch { MessageBox.Show("Ошибка при удалении!"); } } private void button4_Click(object sender, EventArgs e) { Запись_на_услугу zap = new Запись_на_услугу(); zap.id = ID; zap.title = Title; zap.DurationInSeconds = DurationInSeconds.ToString(); this.Hide(); zap.Show(); zap.show(); } } вывод public async void PoductShow() { DataSet ProductDataSet = new DataSet(); DataTable ProductDataTable = new DataTable(); List<ControlProductList> ControlProductList = new List<ControlProductList>(); ControlProductList[] ControlProductListArr = { }; await Task.Run(() => { ProductDataSet = SQL.Table($@"SELECT [ID] ,[Title] ,[Cost] ,[DurationInSeconds] ,[Description] ,[Discount] ,[MainImagePath] FROM [Service] {Title}"); if (ProductDataSet.Tables.Count <= 0) { MessageBox.Show("Что то пошло не так"); return; } ProductDataTable = ProductDataSet.Tables[0]; for (int i = 0; i < ProductDataTable.Rows.Count; i++) { var Product = ProductDataTable.Rows[i].ItemArray.Select(x => x.ToString()).ToArray(); ControlProductList controlProductLists = new ControlProductList(int.Parse(Product[0]), Product[1], int.Parse(Product[2]), int.Parse(Product[3]), Product[4], int.Parse(Product[5]), Product[6]); controlProductLists.Dock = DockStyle.Top; controlProductLists.Name = "controlProductLists" + i; ControlProductList.Add(controlProductLists); } ControlProductListArr = ControlProductList.ToArray(); }); panel6.Controls.Clear(); panel6.Visible = false; panel6.SuspendLayout(); panel6.Controls.AddRange(ControlProductListArr); await Task.Delay(100); panel6.Visible = true; panel6.ResumeLayout(); } CSHARP public async void PoductShow() { DataSet ProductDataSet = new DataSet(); DataTable ProductDataTable = new DataTable(); List<ControlProductList> ControlProductList = new List<ControlProductList>(); ControlProductList[] ControlProductListArr = { }; await Task.Run(() => { ProductDataSet = SQL.Table($@"SELECT [ID] ,[Title] ,[Cost] ,[DurationInSeconds] ,[Description] ,[Discount] ,[MainImagePath] FROM [Service] {Title}"); if (ProductDataSet.Tables.Count <= 0) { MessageBox.Show("Что то пошло не так"); return; } ProductDataTable = ProductDataSet.Tables[0]; for (int i = 0; i < ProductDataTable.Rows.Count; i++) { var Product = ProductDataTable.Rows[i].ItemArray.Select(x => x.ToString()).ToArray(); ControlProductList controlProductLists = new ControlProductList(int.Parse(Product[0]), Product[1], int.Parse(Product[2]), int.Parse(Product[3]), Product[4], int.Parse(Product[5]), Product[6]); controlProductLists.Dock = DockStyle.Top; controlProductLists.Name = "controlProductLists" + i; ControlProductList.Add(controlProductLists); } ControlProductListArr = ControlProductList.ToArray(); }); panel6.Controls.Clear(); panel6.Visible = false; panel6.SuspendLayout(); panel6.Controls.AddRange(ControlProductListArr); await Task.Delay(100); panel6.Visible = true; panel6.ResumeLayout(); }
Так ты просто запрос в PoductShow() поменяй, и туда подавай эту строку поисковую разве так не проще будет?
Title = $"select * from Service where Title like '%{textBox1.Text}%' "; CSHARP Title = $"select * from Service where Title like '%{textBox1.Text}%' "; ProductDataSet = SQL.Table($@"SELECT [ID] ,[Title] ,[Cost] ,[DurationInSeconds] ,[Description] ,[Discount] ,[MainImagePath] FROM [Service] {Title}"); CSHARP ProductDataSet = SQL.Table($@"SELECT [ID] ,[Title] ,[Cost] ,[DurationInSeconds] ,[Description] ,[Discount] ,[MainImagePath] FROM [Service] {Title}"); твой итоговый запрос будет SELECT [ID] ,[Title] ,[Title],[Cost] ,[DurationInSeconds] ,[Description] ,[Discount] ,[MainImagePath] FROM [Service] {Title} SQL SELECT [ID] ,[Title] ,[Title],[Cost] ,[DurationInSeconds] ,[Description] ,[Discount] ,[MainImagePath] FROM [Service] {Title}