Ведущий Диалог
Зарегистрирован: 29 September 2002
Сообщения: 143
Примеры кода: 0
|
RE[4]: Как отсоединить datarow от датасет |
26 December 2002 10:54 |
|
|
|
|
Проблема в том, что необходимо передать текущую строку в другой класс, где датасет с той же схемой. При передаче как по ссылке, так и по значению вываливается ошибка, типа datarow принадлешит к другому table. Как быть, передавать весь dataset не хочется.
Можно конечно создать новый row и пройтись по его элементам, присвоив значения полученного datarow, а потом выполнить обратную операцию при выходе из класса но некрасиво это.
Передавай массив данных строки, а не саму строку - ItemArray. И тогда на ура пройдет что-то типа
DataRow dr = dataSet2.Tables[0].NewRow();
dr.ItemArray = daatSet1.Tables[1].Rows[5].ItemArray;
Вроде так.
Супер! Я сделал чуть чуть по другому и возникла неожиданная проблема.
Private Sub Button_NrZn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_NrZn.Click
Dim RW As DataRow
RW = Me.DataView_Zn(Me.BindingContext(Me.DataView_Zn).Position).Row()
Me.Dataset_Z1.ZN.Rows.Remove(RW)
Dim Frm_NarZN As New Frm_NarZN(RW)
Frm_NarZN.ShowDialog(Me)
End Sub
Public Sub New(ByVal DR As DataRow)
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
Me.TextBox_Otv.DataBindings.Add(New System.Windows.Forms.Binding("Text", DR, "OtvNm"))
End Sub
Ошибка следующая: An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in system.windows.forms.dll Additional information: Property accessor 'OtvNm' on object 'W.Dataset_Z+ZNRow' threw the following exception:'Cannot get value because it is DBNull.'
Но передавая DataTable или DataView ошибка байндинга Text к DBNull не возникает, почему?
А у тебя DataRow из "типизированного" ?
Да
И поддерживает ли 'OtvNm' значения null ?
Естественно, Row из того же Table, биндинг которого не вызывает ошибки, если байндится все что угодно кроме, именно, row.
|
|