Member 12718897 Ответов: 0

Как добавить новую строку в 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

в конце функции сохранения свяжите данные из БД

0 Ответов