duda con .net (segunda parte) xD

Sr_RoS

Intentaré explicarme lo mejor posible

Tengo una duda sobre como extraer un dato de un datatable en .net

necesito extraer un valor de una datatable, y para ello he creado un dataview de tal forma que solo tenga seleccionada una fila en el datatable
una vez tenia el dataview he creado un databinding y vinculado a un label

la pregunta es?
hay alguna forma de sacarlo mas facil?, a ser preferible en un string?

anexo:
hay alguna forma de sacar el texto de un combobox al que se le ha hecho un databinding?

lo que he encontrado por internet me parece un codigo muy engorroso

un saludo y gracias por vuestras respuestas

Soltrac

Para sacar de un datatable:

TuLabel.Text = TuTabla.Rows(NumeroDeFila)("tunombredecolumna")

Q quieres usar bindings? Pues tendrás q utilizar ese método

Del Combo, supongo q quieres el value no el text.

TuCombo.SelectedValue

Sr_RoS

gracias, lo probaré

Respecto lo del combo es algo distinto.
Para mostrar los datos en un combobox uso un databinding (que es una linea muy simple de codigo).
Sin embargo cuando quiero sacar un valor en concreto lo de TuCombo.SelectedValue da un error de tipo de datos el cual me vuelve loco xD

kas

Podrias poner el codigo de como cargas el combo y el texto entero del error que te da y su tuipo, po favó?

Sr_RoS

Correccion: mia culpa.
No era un binding sino la propiedad datasource del combobox

El uso del binding (aun no se que quiere decir) esta en la fuente, abajo del todo

Private Sub ComboBox6_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox6.SelectedIndexChanged
Dim i As String
i = ComboBox6.SelectedItem
'MsgBox(m_claseGlobal.dtMarca.TableName) 'CON ESTO COMPROBAMOS QUE EL dtMarca NO ESTE VACIO
'OBTENEMOS EL dtMarca Y CREAMOS UNA VISTA dv PARA SU MANIPULACION
If i = "Otro" Then
TextBox31.Show()
ComboBox7.Hide()
Else
TextBox31.Hide()
ComboBox7.Show()
Dim dv As New Data.DataView
dv.Table = m_claseGlobal.dtMarca
dv.RowFilter = "tipo='" + i + "' or tipo='Otro'"
ComboBox7.DataSource = dv
ComboBox7.DisplayMember = "nombre"
End If


End Sub

Private Sub ComboBox7_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox7.SelectedIndexChanged
Dim aux As String
aux = ComboBox7.SelectedValue '<- linea 195, el error
Label21.Text = aux
End Sub

error:
La conversión del tipo 'DataRowView' en el tipo 'String' no es válida

Detalles:
Consulte el final de este mensaje para obtener más detalles sobre cómo invocar a la depuración
Just-In-Time (JIT) en lugar de a este cuadro de diálogo.

************** Texto de la excepción **************
System.InvalidCastException: La conversión del tipo 'DataRowView' en el tipo 'String' no es válida.
en Microsoft.VisualBasic.CompilerServices.Conversions.ToString(Object Value)
en applicacionPDA.Form4.ComboBox7_SelectedIndexChanged(Object sender, EventArgs e) en "ruta del programa"\Form4.vb:línea 195
en System.Windows.Forms.ComboBox.OnSelectedIndexChanged(EventArgs e)
en System.Windows.Forms.ComboBox.WmReflectCommand(Message& m)
en System.Windows.Forms.ComboBox.WndProc(Message& m)
en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Fuente:
Microsoft .NET Compact Framework QuickStarts Tutorial
http://samples.gotdotnet.com/quickstart/CompactFramework/doc/adonetdatabinding.aspx

Soltrac

Hazlo asi:

ComboBox7.datasource = m_claseGlobal
ComboBox7.datamember = m_claseGlobal.dtMarca
(Si no va así, pon ComboBox7.datamember = "dtMarca", es q no recuerdo como era)

ComboBox7.DisplayMember = "nombre"

Y mira si así te rula.

Sr_RoS

que es lo que se supone que hace "datamenber"?

Y0K3S3

decirle que "columna" tiene que usar para llenar el combo...(en el caso que te ha puesto se refiere a un atributo/propiedad de una clase).

Sr_RoS

Era cono decía #2
al final funcionó con
MsgBox(dv.Item(0)("id"))

dataview(dv) o dataset pero en vez de .Row era .Item(fila)("columna")

respecto de lo del combobox como puedo sacar el item seleccionado, y con eso, sobre otro dataview o almacenadolo en una variable, puedo sacar el dato para filtrar otra tabla.

muchas gracias a todos

Soltrac

#9 Bueno bueno, tu preguntaste una manera menos engorrosa y yo te lo puse para que no tuvieras q seleccionar el dataview.

Con dataview es como tu dices :P

Un saludo!

Sr_RoS

#10 la verdad es que es, por lo menos, mas clara

Usuarios habituales

  • Sr_RoS
  • Soltrac
  • Y0K3S3
  • kas