Как добавить новую строку в datagridview с существующими строками
У меня есть поле со списком в моей форме, когда я выбираю элемент из поля со списком в соответствии с выбранным элементом, он показывает связанные значения в datagridview. Но когда я пытаюсь добавить новую строку в тот же datagridview, он очищает старые строки и отображает только новую строку в datagridview.
Что я уже пробовал:
при загрузке формы для отображения заголовка
dt.Columns.Add("Project ID",typeof(string)); dt.Columns.Add("Product Name",typeof(string)); dt.Columns.Add("Supplier Name", typeof(string)); dt.Columns.Add("Product Cost", typeof(float)); dt.Columns.Add("product Price", typeof(float)); dt.Columns.Add("Product Quantity", typeof(int)); dgprdesc.DataSource = dt;
на addbuttonevent
private void btnadd_Click(object sender, EventArgs e) { dt.Rows.Add(txtprid.Text,cmbproduct.SelectedItem,cmbsupplier.SelectedItem,txtcost.Text,txtprice.Text,txtquantity.Text); dgprdesc.DataSource = dt; }
и как добавить только новую строку в базу данных из представления сетки
кто-нибудь может мне помочь, пожалуйста
Karthik_Mahalingam
Проверил ваш код, он отлично работает.
возможно, вы где-то очищаете dt, публикуете весь код.
Member 12718897
публичный частичный класс NewProject: Form
{
строка cn = ConfigurationManager.ConnectionStrings ["con"].Параметр connectionString;
DataTable dt = новый DataTable();
общественные NewProject()
{
метод InitializeComponent();
}
частная NewProject_Load недействительным(объект отправителя, EventArgs в электронной)
{
Sqlconnection connection = новый SqlConnection(cn);
//ДЛЯ ЗАГРУЗКИ СПИСКА КЛИЕНТОВ
Команда sqlcommand cmd и = новая команда sqlcommand("Select * из клиента",подключение);
соединение.Открыть();
SqlDataReader sdr = cmd.Метода executereader();
пока (СДР.Читать())
{
cmbclient.Предметы.Добавить (sdr ["ClientName"].Метод toString());
}
СДР.Закрывать();
соединение.Закрывать();
// ДЛЯ ЗАГРУЗКИ СПИСКА ПОСТАВЩИКОВ
SqlCommand cmd1 = new SqlCommand ("Select * from Supplier", connection);
соединение.Открыть();
SqlDataReader sdr1 = cmd1.Метода executereader();
пока (размере sdr1.Читать())
{
cmbsupplier.Предметы.Добавить (sdr1 ["SupplierName"].Метод toString());
}
размере sdr1.Рядом();
соединение.Закрывать();
// ДЛЯ ЗАГРУЗКИ ПРОДУКТОВ
SqlCommand cmd2 = new SqlCommand ("Select * from Product", connection);
соединение.Открыть();
SqlDataReader sdr2 = cmd2. ExecuteReader();
пока (sdr2.Читать())
{
cmbproduct.Предметы.Add (sdr2 ["ProductName"].Метод toString());
}
sdr2.Рядом();
соединение.Закрывать();
// ДЛЯ ДОБАВЛЕНИЯ ДАННЫХ В ПРЕДСТАВЛЕНИЕ СЕТКИ
ДТ.Столбцы.Add ("идентификатор проекта", typeof (string));
ДТ.Столбцы.Add ("Product Name", typeof (string));
ДТ.Столбцы.Add ("имя поставщика", typeof (string));
ДТ.Столбцы.Add ("Product Cost", typeof (float));
ДТ.Столбцы.Add ("product Price", typeof (float));
ДТ.Столбцы.Add ("количество продукта", typeof(int));
dgprdesc.Источник данных = ДТ;
}
частный недействительными label1_Click(объект отправителя, EventArgs в электронной)
{
}
частная btnclose_Click недействительным(объект отправителя, EventArgs в электронной)
{
этот.Закрывать();
}
частная btnadd_Click недействительным(объект отправителя, EventArgs в электронной)
{
ДТ.Строк.Добавить(txtprid.Текст, cmbproduct.Элемент,cmbsupplier.Элемент,txtcost.Текст, txtprice.Текст, txtquantity.Текст);
dgprdesc.Источник данных = ДТ;
}
частная btnremove_Click недействительным(объект отправителя, EventArgs в электронной)
{
по каждому элементу (элемент ячейки datagridviewrow в этом.dgprdesc.SelectedRows)
{
dgprdesc.Строк.RemoveAt(пункт.Индекс);
}
}
частная btnew_Click недействительным(объект отправителя, EventArgs в электронной)
{
бтнью.Enabled = false;
btnsave.Включен = истина;
txtprname.Включен = истина;
пдате.Включен = истина;
cmbclient.Включен = истина;
cmbproduct.Включен = истина;
cmbsupplier.Включен = истина;
txtcost.Включен = истина;
txtprice.Включен = истина;
txtquantity.Включен = истина;
}
частный недействительными btnsave_Click(объект отправителя, EventArgs в электронной)
{
Sqlconnection connection = новый SqlConnection(cn);
по каждому элементу (ячейки datagridviewrow Row в dgprdesc.Строк)
{
используя (sqlcommand, который cmd1 = новая команда sqlcommand("вставить в значения ProductSell(@параметр projectid, @Марка, @SupplierName,@ProductCost,@параметр,@столбец productquantity)", подключения))
{
cmd1.Параметры.AddWithValue ("@ProjectID", строка.Ячейки ["идентификатор проекта"]. значение);
cmd1.Параметры.AddWithValue ("@ProductName", строка.Ячейки ["Название Продукта"]. Значение);
cmd1.Параметры.AddWithValue ("@SupplierName", строка.Ячейки ["Имя Поставщика"]. Значение);
cmd1.Параметры.AddWit
Karthik_Mahalingam
кажется, все в порядке. поставьте точку останова и отладьте ее.
Member 12718897
да, он работает нормально, когда я начинаю новый проект, который работает очень хорошо, но когда я пытаюсь отредактировать проект, он не работает.
Karthik_Mahalingam
что вы подразумеваете под редактированием проекта?
это имеет большое значение.
Member 12718897
после сохранения данных с помощью кнопки save, если я хочу добавить больше строк в тот же проект ,поэтому я использую кнопку edit на моей форме . после этого я выбираю конкретный проект из поля со списком, и он загрузит все данные из databse в представлении datagrid, в том же представлении сетки я хочу добавить еще несколько строк после старых данных, и это должно быть сохранено в базе данных.
Karthik_Mahalingam
опубликуйте код кнопки Сохранить
Member 12718897
частный недействительными btnsave_Click(объект отправителя, EventArgs в электронной)
{
Sqlconnection connection = новый SqlConnection(cn);
по каждому элементу (ячейки datagridviewrow Row в dgprdesc.Строк)
{
используя (sqlcommand, который cmd1 = новая команда sqlcommand("вставить в значения ProductSell(@параметр projectid, @Марка, @SupplierName,@ProductCost,@параметр,@столбец productquantity)", подключения))
{
cmd1.Параметры.AddWithValue ("@ProjectID", строка.Ячейки ["идентификатор проекта"]. значение);
cmd1.Параметры.AddWithValue ("@ProductName", строка.Ячейки ["Название Продукта"]. Значение);
cmd1.Параметры.AddWithValue ("@SupplierName", строка.Ячейки ["Имя Поставщика"]. Значение);
cmd1.Параметры.AddWithValue ("@ProductCost", строка.Ячейки ["Себестоимость Продукта"].);
cmd1.Параметры.AddWithValue ("@ProductPrice", строка.Ячейки["Цена Продукта"].Ценность);
cmd1.Параметры.AddWithValue ("@ProductQuantity", строка.Ячейки ["Количество Продукта"]. Значение);
соединение.Открыть();
cmd1.Метод executenonquery();
соединение.Закрывать();
}
}
строка date = pdate.Ценность.ToString("yyyyMMdd");
Команда sqlcommand cmd и = новая команда sqlcommand("вставить в проект (параметр projectid,название проекта,Имяклиента,дата)значения('" + txtprid.Текст + "','" + txtprname.Текст + "', '" + cmbclient.Текст + "', '" + дата +"')", соединение);
соединение.Открыть();
УМК.Метод executenonquery();
соединение.Закрывать();
Ящик для сообщений.Show ("Reocrdдобавлено Успешно");
бтнью.Включен = истина;
btnsave.Enabled = false;
txtprname.Enabled = false;
пдате.Enabled = false;
cmbclient.Enabled = false;
cmbproduct.Enabled = false;
cmbsupplier.Enabled = false;
txtcost.Enabled = false;
txtprice.Enabled = false;
txtquantity.Enabled = false;
}
Karthik_Mahalingam
в конце функции сохранения свяжите данные из БД