Как я могу добавить новые записи в datatable из datagridview после фильтрации
у меня есть форма на c#. форма имеет два вида datagridview. 1-й datagridview извлекает записи из базы данных(sql server)
И у него также есть флажки в его 1-м столбце, так что какой бы элемент ни был отмечен, он будет перенесен во 2-й datagridview.я использую datatable для переноса элементов во 2-й datagridview.у меня также есть текстовое поле, используемое для поиска элемента в 1-м gridview, поэтому элементы будут отфильтрованы. Нет никаких проблем в добавлении элементов на 2-м gridview, но когда я ищу элемент и добавляю его к существующим элементам на 2-м gridview, он добавляет только тот элемент, который я искал, и все существующие элементы на 2-м gridview исчезают. я использовал rowfilter для окна поиска.pls.help. спасибо
Что я уже пробовал:
я попытался изменить код для поиска элементов в текстовом поле и удалить функцию RowFilter datatable, но это не сработало
Richard MacCutchan
На первый взгляд в вашем коде что-то не так. Но мы не можем видеть ваш код, поэтому невозможно сделать какие-либо предложения.
rommelpabustan
вот мой код для текстового поля поиска:(dgvCustProducts.Источник данных как DataTable).DefaultView.RowFilter = строка.Format("[ITEM NAME] LIKE '{0}%'", txtSearch.Текст);
rommelpabustan
а вот мой код для передачи предметов:
/передача записей datagridview с помощью datatable в другой datagridview(Form2)
пробовать
{
если (dgvCustProducts.Строк.Количество == 0)
{
Ящик для сообщений.Show("нет элементов для загрузки.Сначала выберите тип операции"., "Поле Требуется", MessageBoxButtons.Хорошо, MessageBoxIcon.Предупреждение);
}
еще
{
if (data == null)//решение для ссылки на объект не установлено ошибка для datatable
{
Ящик для сообщений.Show("Сначала выберите элементы, которые вы хотите перенести.", "поле обязательно", MessageBoxButtons.Хорошо, MessageBoxIcon.Предупреждение);
вернуть;
}
//еще если
//{
//}
еще
{
данные.Столбцы.Четкий();
данные.Четкий();
//создание столбцов для datatable
данные.Столбцы.Add("TRANSACTION ID", typeof(string));//0
данные.Столбцы.Add("PRODUCT ID", typeof(string));//1
данные.Столбцы.Add("QTY", typeof(double));//2
данные.Столбцы.Add("UNIT", typeof(string));//3
данные.Столбцы.Add("ARTICLES", typeof(string));//4
данные.Столбцы.Add("UNIT PRICE", typeof(decimal));//5
данные.Столбцы.Add("AMOUNT", typeof(decimal));//6
строка tr_prefix = "TR-";
int trans_idno = (new Random()).Next(100, 1000);
транзакция = tr_prefix + trans_idno.Метод toString();
сумма = кол-во * цена единицы измерения;
по каждому элементу (ячейки datagridviewrow Row в dgvCustProducts.Строки)
{
bool isChecked = конвертировать.ToBoolean(row.Cells["colTransfer"].Value);//исходный код
если (не этот флажок установлен)
{
if (dgvCustProducts.Избранные воробьи.Count >= 1)
{
кол-во = конвертация.ToDouble(row.Cells[1].Value);
если (кол-во == 0)
{
Ящик для сообщений.Show("пожалуйста, добавьте количество к продукту, который вы передаете", "количество", MessageBoxButtons.Хорошо, MessageBoxIcon.Восклицание);
вернуть;
}
еще
{
кол-во = конвертация.ToDouble(row.Cells[1].Value);
prod_id = строка.Ячейки[2].Значение.Метод toString();
единица измерения = строка.Ячейки[3].Значение.Метод toString();
item_name = строка.Ячейки[4].Значение.Метод toString();
цена = конвертировать.ToDouble(row.Cells[5].Value);
сумма = конвертация.ToDouble(row.Cells[1].Value) * конвертировать.ToDouble(row.Cells[5].Value);
data.Rows.Add(транзакция, prod_id, строка.Ячейки[1].Значение, строка.Ячейки[3].Значение, строка.Ячейки[4].Значение, строка.Ячейки[5].значение, сумма);
}
}
dgvSalesInv.DataSource = данные;
двойная сумма = 0;//ililipat lng ng pwesto. Дито илалагай
for (int i = 0; i < dgvSalesInv.Rows.Граф; ++i)
{
сумма += конвертация.Метод todouble(dgvSalesInv.РО