У меня есть привязка datagridview с данными, поступающими из базы данных, которая работает нормально.Он загружается с данными при загрузке формы.В соответствии с требованиями клиента я добавил новый столбец кнопки в представление таблицы данных, используя следующий код
private void form1_load
{
var productsbycount = abc.products.GroupBy(x => x.product_Id).Select(a => new
{
productid = a.Key,
prouctnam = a.FirstOrDefault().product_Name,
productimage = a.FirstOrDefault().product_Image,
productdescr = a.FirstOrDefault().product_Description,
stockavailable = a.LongCount(),
productprice = a.FirstOrDefault().product_Price
});
productbindingsource.DataSource = productsbycount;
productgridview.DataSource = productbindingsource;
DataGridViewButtonColumn buttoncolumn = new DataGridViewButtonColumn();
productgridview.Columns.Add(buttoncolumn);
buttoncolumn.Text = "Buy";
buttoncolumn.HeaderText = "Buy";
buttoncolumn.UseColumnTextForButtonValue = true;
buttoncolumn.Name = "btnbuy";
productgridview.Columns[0].Visible = false;
}
, когда форма загружается нормально.
, но я проверяю условия, как если бы мывыберите любой элемент в виде, подобном представлению списка, представление таблицы данных отсортировано в соответствии с выбранным элементом ... для этого я сделал вот так ....
if (lstviewcategories.SelectedItems[0].Value.ToString() == "All")
{
var productsbycount = abc.products.GroupBy(x => x.product_Id).Select(a => new
{
productid = a.Key,
prouctnam = a.FirstOrDefault().product_Name,
productimage = a.FirstOrDefault().product_Image,
productdescr = a.FirstOrDefault().product_Description,
stockavailable = a.LongCount(),
productprice = a.FirstOrDefault().product_Price
});
productbindingsource.DataSource = productsbycount;
productgridview.DataSource = productbindingsource;
DataGridViewButtonColumn buttoncolumn = new DataGridViewButtonColumn();
productgridview.Columns.Add(buttoncolumn);
buttoncolumn.Text = "Buy";
buttoncolumn.HeaderText = "Buy";
buttoncolumn.UseColumnTextForButtonValue = true;
buttoncolumn.Name = "btnbuy";
productgridview.Columns[0].Visible = false;
}
- если янажмите на первый элемент списка («Все»), представление таблицы данных работает нормально ....
- если я снова нажму на первый элемент списка («Все»), столбец кнопки появится два раза ....
- если я снова нажму первый элемент списка («Все»), столбец кнопки появится три раза ...
Это то, что происходит со всеми элементами в списке.
У меня вопрос, есть ли другой способ добавить столбец кнопки в представление таблицы данных?
Я попытался добавить столбец кнопки в form1.cs [design], это повлияет на фактические столбцы вDataGridView.Я работаю в winforms с языка C #.Может ли кто-нибудь предложить какие-либо идеи по этому поводу?
Предположим, если я уберу приведенный ниже код в этом цикле
if (lstviewcategories.SelectedItems[0].Value.ToString() == "All")
{
}
Фактический столбец кнопок исчез.Может ли кто-нибудь помочь в этом.
ИЗМЕНЕННЫЙ КОД:
ПЕРВОЕ СОСТОЯНИЕ: if (lstviewcategories.SelectedItems [0] .Text.ToString () == CategoryType.Тип2) {
var productsbycount = abc.products.GroupBy(x => x.product_Id).Where(a => a.FirstOrDefault().product_Price > 0 && a.FirstOrDefault().product_Price <= 1000)
.Select(a => new
{
productid = a.Key,
prouctnam = a.FirstOrDefault().product_Name,
productimage = a.FirstOrDefault().product_Image,
productdescr = a.FirstOrDefault().product_Description,
stockavailable = a.LongCount(),
productprice = a.FirstOrDefault().product_Price
});
productbindingsource.ResetBindings(false);
/*productbindingsource.DataSource = productsbycount;
productgridview.DataSource = productbindingsource;
DataGridViewButtonColumn buttoncolumn = new DataGridViewButtonColumn();
productgridview.Columns.Add(buttoncolumn);
buttoncolumn.Text = "Buy";
buttoncolumn.HeaderText = "Buy";
buttoncolumn.UseColumnTextForButtonValue = true;
buttoncolumn.Name = "btnbuy";
productgridview.Columns[0].Visible = false;*/
}
Второе условие:
if (lstviewcategories.SelectedItems[0].Text.ToString() == CategoryType.Type3)
{
var productsbycount = abc.products.GroupBy(x => x.product_Id).Where(a => a.FirstOrDefault().product_Price > 500 && a.FirstOrDefault().product_Price <= 1000)
.Select(a => new
{
productid = a.Key,
prouctnam = a.FirstOrDefault().product_Name,
productimage = a.FirstOrDefault().product_Image,
productdescr = a.FirstOrDefault().product_Description,
stockavailable = a.LongCount(),
productprice = a.FirstOrDefault().product_Price
});
productbindingsource.ResetBindings(false);
/* productbindingsource.DataSource = productsbycount;
productgridview.DataSource = productbindingsource;
DataGridViewButtonColumn buttoncolumn = new DataGridViewButtonColumn();
productgridview.Columns.Add(buttoncolumn);
buttoncolumn.Text = "Buy";
buttoncolumn.HeaderText = "Buy";
buttoncolumn.UseColumnTextForButtonValue = true;
buttoncolumn.Name = "btnbuy";
productgridview.Columns[0].Visible = false;*/
}
эти условия буксировки не работают ..