Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 добавление записей через BindingSource  [new]
Dimyan
Member

Откуда: Новосибирск
Сообщений: 405

Здравствуйте!
Подскажите пожалуйста как добавить запись в таблицу через BindingSource
который связан с гридом (непосредственно грид запрещен к редактированию)?

Posted via ActualForum NNTP Server 1.3

4 май 06, 11:35    [2628627]     Ответить | Цитировать Сообщить модератору
 Re: добавление записей через BindingSource  [new]
Dimyan
Member

Откуда: Новосибирск
Сообщений: 405
попробывал так
void optionsBindingSource_AddingNew(object sender, AddingNewEventArgs e)
    {
      psDataSet.optionsDataTable tbl = psDataSet.options;
      psDataSet.optionsRow row = tbl.NewoptionsRow();

      row.option_name = "test";
      row.option_value = "test";
      e.NewObject = row;
    }

    private void button1_Click(object sender, EventArgs e)
    {
      optionsBindingSource.AddNew();
    }
но ругается Objects added to a BindingSource's list must all be of the same type.
4 май 06, 19:41    [2631614]     Ответить | Цитировать Сообщить модератору
 Re: добавление записей через BindingSource  [new]
Витал
Member

Откуда: Россия, Санкт-Петербург
Сообщений: 2021
Может поможет:
"У объекта DataTabie есть свойство Rows, возвращающее объект DataRowCoUection,
который содержит набор объектов DataRow, Как и в случае с большинством наборов, для добавления новых элементов в объект DataRowCoUection годится метод Add. Тем не менее принципы создания объектов DataRow и других объектов ADO.NET различны.
Допустим, вам требуется программно добавить в объект DataTabie, уже содер-
жащий 10 объектов DataRow, еще 10 объектов DataRow. Чтобы добавить запись в таблицу, вы задаете значения каждого поля. Но как. DataRow узнает структуру таблицы, т. е. опредетяет, какие столбцы она содержит? У объекта DataTabie есть метод NewRow, который возвращает новый объект DataRow с информацией обо всех столбцах таблицы,
Visual C# .NET
DataRow row = ds.Tables["Customers"].NewRow();
row["CustomerID"] =: "ALFKI";
Создав новый объект DataRow, стоит воспользоваться его свойством Item и заполнить различные поля. Кроме того, свойство Item позволяет просмотреть содержимое поля записи.
Метод DataTable.NewRow создает новую запись, однако не добавляет ее в объект DataTable. Вообще говоря, не следует моментально добавлять новую запись в таблицу, поскольку в данный момент запись пуста. Полям задаются их значения по умолчанию или, если таковые не определены, значения Null. Если вы создадите новый объект DataRow и не станете сразу же добавлять его в набор Rows, то сможете предварительно задать значения полей новой записи. Столбец CustomerlD таблицы Customers не принимает значений Null и не имеет значения по умолчанию. Предположим, у вас есть объект DataTable Customers с первичным ключом, основанным на столбце CustomerlD. Если вы попытаетесь добавить в таблицу новую запись Customers, не задав значение поля CustomerlD, система сгенерирует исключение.
Указав значения всех нужных полей записи, можно добавить ее в объект Data-
Table, воспользовавшись методом Add объекта DataRoivCollection и передав ему эту запись:
Visual C# .NET
DataRow row = ds.Tables["Customers"].NewRow();
row["CustoraerID"] = "ALFKI";
ds.Tables["Customers"].Rows.Add(row);
Объект DataTable предоставляет еще один способ добавить новую запись в
таблицу — метод LoadDataRoic. Первый параметр данного метода — это массив значений, элементы которого соответствуют столбцам таблицы. Второй параметр, AcceptChanges, позволяет управлять значением свойства RowState нового объекта DataRow. Если передать в качестве этого параметра False (см. ниже), значением свойства RowState объекта DataRow будет Added, как и при добавлении новой записи средствами методов DataTableNewRow и RowsAdd.
Visual C# .NET
object[] aValues = {"ALFKI", "Alfreds Futterkiste",
"Maria Anders", "030-0074321"};
ds.Tables["Customers"].LoadDataRow(aValues, false);

Д.Сеппа.
5 май 06, 09:43    [2632736]     Ответить | Цитировать Сообщить модератору
 Re: добавление записей через BindingSource  [new]
Dimyan
Member

Откуда: Новосибирск
Сообщений: 405
Витал, спасибо за ответ, но в том то и дело что хотелось бы разобратся с BindingSource ведь через него тоже можно добавлять записи у меня почему то не получается :(( И очень хотелось бы узнать как всетаки это сделать через BindingSource
5 май 06, 10:36    [2633073]     Ответить | Цитировать Сообщить модератору
 Re: добавление записей через BindingSource  [new]
eLVik
Member

Откуда: г. Сыктывкар
Сообщений: 108
BindingSource1.AddNew();
DataRowView drw = BindingSource1.Current as DataRowView;
drw["Field1"] = NewValue;
....
BindingSource1.EndEdit();
11 май 06, 15:44    [2653179]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить