Golden Basim Ответов: 0

Почему repositoryitemlookupedit возвращает нулевое значение


привет,
ч есть gridview1, на что содержать RepositoryItemLookUpEdit columnto сделать пользователю выбрать элементы :
имя поля столбца : stitems_ID (int(11))
RepositoryItemLookUpEdit Display Member : Name (varchar(255))
RepositoryItemLookUpEdit Value Member : stitems_ID (int(11))

st_itemsBindingSource.DataSource = Context.st_items.Local.ToBindingList();



gridview1 заполняется данными как : success

purchases_itemBindingSource1.DataSource = Context.purchases_item.Where(u => u.pmain_ID == PurchasesID).ToList();


я использовал Entity framework для вставки / обновления / выбора ..

операция вставки: успешная

for (int ItemImdex = 0; ItemImdex < gridView1.DataRowCount; ++ItemImdex)
               {

                   purchases_item purchasesItem = new purchases_item();
                   purchasesItem.pmain_ID = lastid;
                   purchasesItem.stitems_ID = Convert.ToInt32(gridView1.GetRowCellValue(ItemImdex, "stitems_ID"));
                    .........

                   Context.purchases_item.Add(purchasesItem);
                   Context.SaveChanges();
               }


Операция обновления: сбой
данные, загруженные из базы данных mysql в gridview успешно и правильное значение появляются в repositoryitemlookupedit , но во время операции обновления
Convert.ToInt32(gridView1.GetRowCellValue(ItemImdex, "stitems_ID"))
возвращает нулевое значение, а не выбранное значение.

Что я уже пробовал:

gridview1 filled with data as : succeed
purchases_itemBindingSource1.DataSource = Context.purchases_item.Where(u => u.pmain_ID == PurchasesID).ToList();

johannesnestler

так что же было исключением? кстати. вы можете вызвать SaveChanges вне цикла - так что вы не говорите x-раз с базой данных во время цикла...

Golden Basim

данные, загруженные из базы данных mysql в gridview успешно и правильное значение появляются в repositoryitemlookupedit , но во время операции обновления преобразуются.ToInt32(gridView1.GetRowCellValue(ItemImdex, "stitems_ID")) возвращает нулевое значение, а не выбранное значение.

Richard MacCutchan

Используйте свой отладчик, чтобы войти в эту строку кода и выяснить, почему. Скорее всего, какая-то ссылка на объект или индекс является недопустимой.

Golden Basim

используя эти шаги, я нашел значение "а" в первой строке = 1500 (правильное значение)
но последняя пуста. ( я использую этот код для удаления старых данных элементов)
ля = "";
for (int i = 0; i < gridView1.DataRowCount; ++i)
{
преобразование.Метод toString(управления gridview1.GetRowCellValue(я, "stitems_ID")) + " / ";
}
// удаление старых элементов
Context.purchases_item.RemoveRange(Context.purchases_item.Где(u => u.pmain_ID == PurchasesID));
Контексте.Метод SaveChanges();
//// удалить старые сериалы
Контекст.purchases_item_seriels.RemoveRange(Context.purchases_item_seriels.Где(u => u.pmain_ID == PurchasesID));
Контексте.Метод SaveChanges();
ля = "";
for (int i = 0; i < gridView1.DataRowCount; ++i)
{
преобразование.Метод toString(управления gridview1.GetRowCellValue(я, "stitems_ID")) + " / ";
}

Golden Basim

похоже, что здесь ошибка
//Context.purchases_item.RemoveRange(Context.purchases_item.Где(u => u.pmain_ID == PurchasesID));
//Контекст.Метод SaveChanges();
но я не знаю, что это такое ?

Richard MacCutchan

Извините, но вам придется сделать гораздо больше отладки. Мы не можем угадать, какими будут значения всех ваших переменных в любой момент.

0 Ответов