2012-06-18 5 views
1

У меня есть форма vb.net 2010 с 22 привязанными данными элементами управления из двух таблиц, хранящихся в наборе данных, который перемещается с помощью механизма привязки. Это успешно добавляет удаления и обновления. Однако мне нужно, чтобы добавить новую запись, мне нужно, чтобы некоторые из полей были предварительно заполнены. Более конкретно, у меня есть поля баланса точек и т. Д., Которые могут быть любыми значениями, но обычно будут 0 на новом клиенте, поэтому я хочу инициализировать их до 0 при добавлении новых записей.Как установить значения по умолчанию для привязанных к данным элементов управления для добавления в VB.NET

Я нашел событие AddingNew на моем источнике данных, но это вызвано до добавления нового элемента и, следовательно, вся моя инициализация будет потеряна.

любая помощь по этому вопросу будет оценена по достоинству. вид касается Feldoh

ответ

1

Поскольку вы используете DataTables, вы можете вручную установить DefaultValue свойство DataColumn:

Dim dt As New DataTable 
Dim dc As New DataColumn("test", GetType(String)) 
dc.DefaultValue = "hello" 
dt.Columns.Add(dc) 
dt.Rows.Add() 
Debug.WriteLine(dt.Rows(0)("test").ToString) 

Результат: привет

+0

спасибо :). Это сработало отлично. – feldoh

1

Ответ в том числе нескольких связанных таблиц решение:

Как и LarsTech, с использованием

dataset.table.Columns.Item("someField").DefaultValue = someValue

прекрасно работает, если у вас стандартное значение по умолчанию, но оно также работает для сгенерированных значений по умолчанию, если вы сбросите это значение по умолчанию при сохранении до следующего значения, которое вы хотите, если будет сделано новое добавление. Однако, если вы используете набор данных в качестве источника данных, где невозможно создать дочернюю табличную запись (например, в моем случае, когда идентификатор учетной записи будет генерироваться только при сохранении с использованием триггера базы данных для связи всех разных учетных записей), вы все равно можете установить значения по умолчанию для других полей, те из собрата (или вообще отсутствует родитель) таблица, но

dataset.siblingTable.Columns.Item("someField").DefaultValue = someValue

не будет работать как связывание навигатор генерирует только первый родственный и родитель не не генерируется до тех пор, вызывать. Однако в событии BindingSource.PositionChanged источника привязки, который генерируется с помощью нажатия кнопки «добавить», вы можете свободно помещать значения по умолчанию в фактические элементы управления на экране, и они не будут перезаписаны нулями, очевидно, вам нужно ограничить это, чтобы это произошло, только если пользователь нажал добавьте добавление переменной в событие Clicked кнопки добавления, чтобы сообщить вам, когда была нажата кнопка добавления и сброс этой переменной при сохранении или откате. Также возможно изменить сами привязки, которые имеют значение null или пустое значение по умолчанию.

Надеется, что это помогает кто-то еще :)

0

Используйте событие MouseUp на «Добавить строку» кнопку в BindingNavigator вместо «Click» событие. Это потому, что новый ROW не существует в datagridview до тех пор, пока ПОСЛЕ завершения события click.

Private Sub BindingNavigatorAddNewItem_MouseUp(sender As Object, e As MouseEventArgs) Handles BindingNavigatorAddNewItem.MouseUp 
    'works with add row from the binding navigator 
    myDataGridView.Item(3, myDataGridView.CurrentRow.Index).Value = txtDefaultDescrip.Text.Trim 
End Sub 

, чтобы сделать то же самое при добавлении данных непосредственно в вас DataGridView.

Private Sub myDataGridView_DefaultValuesNeeded(sender As Object, e As DataGridViewRowEventArgs) Handles myDataGridView.DefaultValuesNeeded 
    'works with add row inside a datagridview 
    e.Row.Cells(3).Value = txtDefaultDescrip.Text.Trim 
End Sub 

В этом примере у меня есть редактируемое значение по умолчанию, указанное на моем. Если у вас есть неизменяемое значение по умолчанию (например, всегда 1 для столбца 3), вы должны сделать это при настройке своего источника данных.

Смежные вопросы