Как изменить значение «ячейки» в наборе данных? - PullRequest
0 голосов
/ 17 сентября 2010

У меня есть набор данных.Я добавил колонку «Теги».Мне нужно запустить функцию для обновления значения, для каждой строки по одному, для столбца «Теги».Вот то, что я пробовал до сих пор, скажите мне, что мне не хватает.

public System.Data.DataSet PopulateDataGrid(int nViewMode)
{
  System.Data.DataSet ds = _data.GetGridView(nViewMode)
  ds.Tables[0].Columns.Add("Tags", typeof(string));

  foreach (System.Data.DataRow dr in ds.Tables[0].Rows)
  {
    dr.BeginEdit();
    dr.ItemArray.SetValue(_dataFactory.GetPartTags(_dataFactory.ExecuteScalar("SELECT POSITION FROM PARTS WHERE PART_ID = " + dr.ItemArray.GetValue(0)).ToString()), dr.ItemArray.Length - 2);
    dr.SetModified();
    dr.EndEdit();
    dr.AcceptChanges();
  }

  ds.AcceptChanges();
  return ds;
}

Да, я знаю, что мог бы поставить using System.Data и не нужно было бы вставлять это в мой код, но этоэто единственная функция из многих, использующих это, так что я не хотел этого делать (если нет времени на загрузку, то я могу).Хотелось бы, чтобы мне просто нужно было выполнить запрос и все, но это нужно заполнить кодом.Если бы кто-то мог помочь, это было бы здорово.Спасибо.

Редактировать: И я также проверил, что _dataFactory.GetPartTags(_dataFactory.ExecuteScalar("SELECT POSITION FROM PARTS WHERE PART_ID = " + dr.ItemArray.GetValue(0)).ToString()) возвращает желаемое значение.Он просто отображается пустым в DataGridView.Столбец есть, но ничего не заполнено.

1 Ответ

2 голосов
/ 17 сентября 2010

Вы можете просто использовать:

dr["Tags"] = _dataFactory.GetPartTags(_dataFactory.ExecuteScalar("SELECT POSITION FROM PARTS WHERE PART_ID = " + dr.ItemArray.GetValue(0)).ToString())

Обратите внимание, что метод SetModified() помечает строку как измененную, а AcceptChanges() очищает флаги Modified / New / Deleted.Если у вас нет базового кода для хранения этих данных где-либо или автоматического выполнения чего-то большего, это немного избыточно.То же самое с ds.AcceptChanges().И если позже вы попытаетесь использовать адаптер для измененных / новых строк, чтобы отправить их в базу данных после того, как вы сделали AcceptChanges() для набора строк / данных, они не будут найдены как измененные / новые / удаленные, иизменения не будут отправлены в базу данных.

...