 |
|
 |
 |
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Pablosantiagoll Recien nacido

Registrado: 13 Nov 2007 Mensajes: 1
|
Publicado: Sab 17/11/2007 Asunto: Ayuda C# con SQL Mobile |
|
|
Hola necesito ayuda…
Tengo que realizar una especie de factura (toma de pedido) en el Pocket. La idea es utilizar un ComboBox para escoger el producto de una tabla del dataset y en un TextBox que aparesca el valor unitario que corresponde al producto escogido.
El gran problema es que puedo escoger los productos en el ComboBox pero en el TextBox no aparece el valor unitario del producto escogido.
Ya lo intento pero no ha resultado.. Por fa lo necesito de urgencia….
Gracias…..
Nota: Utilizo Windows Mobile 5.0, Visual Studio 2005 (C#), Sql 2005
 |
|
| Volver arriba » |
|
 |
tolgalen VIP

Registrado: 18 Jun 2005 Mensajes: 5349
|
Publicado: Sab 17/11/2007 Asunto: |
|
|
No tengo demasiada experiencia con c# y es posible que existan soluciones mejores, pero así a bote pronto de doy varias.
1) Al seleccionar el producto en el ComboBox , hacer una consulta a la BD para recuperar el precio de ese producto y actualizarlo en el TextBox.
2) Al cargar el combobox, tener un array auxiliar con los precios de los productos. Si los indices estan sincronizados, al tener el listindex del combobox ya sabes a donde acceder en el array auxiliar.
3) En VB6 había una propiedad muy interesante de los ComboBox y ListBox que era "ItenData". Se usaba para al cargar el combo con datos, cargar en ItenData un array con los ID de los valores. En VB.Net ya no existe esa propiedad, aunque hay formas de simularla. Te paso la documentación del MSDN al respecto, aunque es para VB.Net, adaptarla a C# no te deberia ser compilcado.
http://support.microsoft.com/kb/311340/es
No existe la propiedad ItemData de controles ListBox y ComboBox
Id. de artículo : 311340
Última revisión : jueves, 29 de marzo de 2007
Versión : 3.5
En esta página
Síntomas
Solución
Estado
Más información
Pasos para reproducir el comportamiento
Genere un ejemplo del Visual Basic 6.0 para actualización
Actualice el proyecto de Visual Basic 6.0 a Visual Basic . NET o Visual Basic 2005
Genere un proyecto nuevo en Visual Basic .NET o Visual Basic 2005
Referencias
Síntomas
Puede observar los síntomas siguientes:
• Al actualizar un proyecto de Microsoft Visual Basic 6.0 a Visual Basic . NET o Visual Basic 2005, se descartan los datos que se muestran en la ventana Propiedades para la propiedad ItemData.
• En Visual Basic 6.0, puede establecer la propiedad ItemData en tiempo de diseño a través de la ventana Propiedades para ListBox o un control ComboBox. En Visual Basic . NET o Visual Basic 2005, ya no existe la propiedad ItemData para estos controles.
Volver al principio
Solución
Para resolver este problema, utilice uno de los métodos siguientes
• Si actualizó un proyecto de Visual Basic 6.0 a Visual Basic . NET o Visual Basic 2005, utilice el método VB6.SetItemData (en la biblioteca de compatibilidad de Visual Basic 6.0) para rellenar la lista. Este método normalmente se invoca en el constructor del formulario (el Procedure Public Sub New).
• Para un proyecto nuevo de Visual Basic . NET o Visual Basic 2005, utilice una clase para contener los elementos de lista. Para más información, consulte la sección más "información".
Volver al principio
Estado
Esta característica de diseño es el comportamiento.
Volver al principio
Más información
Pasos para reproducir el comportamiento
Genere un ejemplo del Visual Basic 6.0 para actualización
1. Cree un proyecto nuevo EXE estándar en Visual Basic 6.0. Se creará Form1 de manera predeterminada
2. Agregue un control ListBox y un control Label a Form1.
3. Seleccione el control ListBox. En la ventana Propiedades del control ListBox, haga clic en Propiedad de lista y a continuación, agregue los elementos siguientes. Presione la combinación de teclas CTRL+ENTRAR para moverse al elemento siguiente.
Carol Philips
Jim Kim
Jossef Goldberg
Patricia Doyle
4. Haga clic en la propiedad ItemData del control ListBox y a continuación, agregue los valores siguientes:
1001
1002
1004
1005
5. Haga clic con el botón secundario en Form1 y a continuación, haga clic en Ver código. Agregue el código siguiente en el procedimiento de evento Click del control ListBox:
Private Sub List1_Click()
Dim Msg As String
'Add the employee number and the employee name.
Msg = List1.ItemData(List1.ListIndex) & " "
Msg = Msg & List1.List(List1.ListIndex)
Label1.Caption = Msg
End Sub
6. Guarde su proyecto.
7. En el menú Ejecutar, haga clic en Inicio para ejecutar su proyecto. Asegúrese de que el proyecto se ejecuta sin ningún error.
8. Guarde cualquier cambio y a continuación, cierre el entorno de Visual Basic.
Actualice el proyecto de Visual Basic 6.0 a Visual Basic . NET o Visual Basic 2005
1. Inicie Microsoft Visual Studio .NET o Microsoft Visual Basic 2005.
2. En el menú Proyecto, elija Archivo y a continuación, haga clic en Abrir. Seleccione el archivo .vbp que guardó en la sección anterior y a continuación, haga clic en Aceptar.
3. Siga las instrucciones en la pantalla para actualizar el proyecto.
4. Cuando finaliza la actualización, vaya a la ventana Código de Form1. Si la ventana Código no está disponible, haga clic con el botón secundario en Form1 en Explorador de soluciones y a continuación, haga clic en Ver código.
Observe que el código de procedimiento de evento Click en la aplicación de Visual Basic 6.0 se convierte al evento SelectedIndexChanged del control ListBox en Visual Basic . NET o Visual Basic 2005. El código que recupera ahora la información ItemData aparece como seguimientos o similar:
'UPGRADE_WARNING: Event List1.SelectedIndexChanged may fire when form is initialized.
'Click for more: ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup2075"'
Private Sub List1_SelectedIndexChanged(ByVal eventSender As _
System.Object, ByVal eventArgs As System.EventArgs) Handles _
List1.SelectedIndexChanged
Dim Msg As String
'Add the employee number and the employee name.
Msg = VB6.GetItemData(List1, List1.SelectedIndex) & " "
Msg = Msg & VB6.GetItemString(List1, List1.SelectedIndex)
Label1.Text = Msg
End Sub
Nota Este código no requiere ningún cambio. Sin embargo, puede reemplazar a continuación el método VB6.GetItemString por la sintaxis de Visual Basic .NET o Visual Basic 2005:
Msg = Msg & List1.Items(List1.SelectedIndex).ToString
5. Para poder ejecutar esta aplicación correctamente, debe utilizar el método SetItemData para agregar ItemData. Para ello, haga clic para expandir Código generado por el Diseñador de Windows Forms y a continuación, haga clic para expandir el método Public Sub New si ya no se muestra.
6. Agregue el código siguiente después de la instrucción InitializeComponent del procedimiento Sub New:
VB6.SetItemData(List1, 0, 1001)
VB6.SetItemData(List1, 1, 1002)
VB6.SetItemData(List1, 2, 1004)
VB6.SetItemData(List1, 3, 1005)
7. Guarde su proyecto. En el menú Depuración, haga clic en Inicio para ejecutar su proyecto.
8. Haga clic en cualquier elemento del cuadro de lista. Observe que la propiedad ItemData del ListBox aparece en el control Label con Nombre de empleado.
Nota Si agregó ItemData y ListItems en el proyecto de Visual Basic 6.0 mediante programación, su proyecto de Visual Basic . NET actualizado utiliza la sintaxis siguiente para rellenar ListItems con ItemData en el procedimiento Form Load:
List1.Items.Add(New VB6.ListBoxItem("Carol Philips", 1001))
Volver al principio
Genere un proyecto nuevo en Visual Basic .NET o Visual Basic 2005
1. Cree un proyecto nuevo aplicación para Windows de Visual Basic .NET. Form1 se agrega al proyecto de manera predeterminada
Nota Debe cambiar el código en Visual Basic 2005. Forma predeterminada, Visual Basic crea dos archivos para el proyecto cuando crea un proyecto formularios Windows Forms. Si el formulario se denomina Form1, los dos archivos que representan el formulario se denominan Form1.vb y Form1.Designer.vb. Escribe el código en el archivo Form1.vb. El Diseñador de Windows Forms escribe el código en el archivo Form1.Designer.vb. El Diseñador de Windows Forms utiliza la palabra clave parcial para dividir la implementación Form1 en dos archivos independientes. Este comportamiento impide al código generado por el diseñador intercalarse con su código.
Para más información acerca de las mejoras nuevas idioma Visual Basic 2005, visite el sitio Web siguiente Microsoft Developer Network ( MSDN ):
http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx (http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx)
Para más información acerca de clases parciales y el Diseñador de Windows Forms, visite el sitio Web de MSDN siguiente:
http://msdn2.microsoft.com/en-us/library/ms171843.aspx (http://msdn2.microsoft.com/en-us/library/ms171843.aspx)
2. Coloque ComboBox y un control Label en Form1.
3. En Explorador de soluciones, haga clic con el botón secundario en Nombre del proyecto, seleccione Agregar y a continuación, haga clic en Agregar clase. Asegúrese de que se resalta la clase de Visual Basic.
Nota Visual Basic 2005 En hace clic con el botón secundario en Nombre del proyecto, selecciona Agregar y a continuación, hace clic en Clase.
4. Cambie el nombre de la clase MyList.vb y a continuación, haga clic en Aceptar.
5. Escriba el código siguiente en la sección Public Class MyList en la ventana Código de la clase MyList:
Private sName As String
Private iID As Integer 'You can also declare this as String.
Public Sub New()
sName = ""
iID = 0
End Sub
Public Sub New(ByVal Name As String, ByVal ID As Integer)
sName = Name
iID = ID
End Sub
Public Property Name() As String
Get
Return sName
End Get
Set(ByVal sValue As String)
sName = sValue
End Set
End Property
Public Property ItemData() As Integer
Get
Return iID
End Get
Set(ByVal iValue As Integer)
iID = iValue
End Set
End Property
Public Overrides Function ToString() As String
Return sName
End Function
6. En Explorador de soluciones, haga doble clic en Form1.vb para abrir la ventana Diseño de Form1.
7. Haga doble clic en el formulario para ir al procedimiento Form1 Load y a continuación, agregue el código siguiente al procedimiento Form1 Load:
With ComboBox1
.Items.Add(New MyList("Carol Philips", 101))
.Items.Add(New MyList("Jim Kim", 102))
.Items.Add(New MyList("Jossef Goldberg", 103))
.Items.Add(New MyList("Patricia Doyle", 104))
.SelectedIndex = 0 'Set first item as selected item.
End With
8. En Explorador de soluciones, haga doble clic en Form1.vb para abrir la ventana Diseño de Form1.
9. Haga doble clic en el control ComboBox1 y a continuación, agregue el código siguiente al procedimiento ComboBox1 SelectedIndexChanged:
Dim mList As MyList
mList = ComboBox1.Items(ComboBox1.SelectedIndex)
'In the following statement, you can either use mList.ToString or
'mList.Name. They both return the Name property.
Label1.Text = mList.ItemData & " " & mList.Name
'Alternately, you can use the following syntax.
'Label1.Text = ComboBox1.Items(ComboBox1.SelectedIndex).ItemData _
' & " " & ComboBox1.Items(ComboBox1.SelectedIndex).ToString
10. Guarde su proyecto. En el menú Depuración, haga clic en Inicio para ejecutar el proyecto.
11. Seleccione cualquier elemento del cuadro combinado. Observe que la propiedad ItemData del control ComboBox aparece en el control Label con Nombre de empleado.
Nota También puede utilizar una estructura en lugar de una clase en una manera similar. Para más información acerca de cómo utilizar clase contra estructura en Visual Basic .NET o Visual Basic 2005, consulte la sección "Referencie".
Volver al principio
Referencias
Para más información sobre cómo actualizar la propiedad de Visual Basic 6.0 ItemData a Visual Basic . NET o Visual Basic 2005, consulte el tema de "no se puede actualizar la propiedad ItemData" en la documentación de Visual Studio . NET o Visual Basic 2005 Online Help.
Para comprender mejor las diferencias entre una clase y una estructura, consulte el tema "Clases y de Estructuras" en la documentación de Visual Studio . NET o Visual Basic 2005 Online Help. |
|
| Volver arriba » |
|
 |
tolgalen VIP

Registrado: 18 Jun 2005 Mensajes: 5349
|
|
| Volver arriba » |
|
 |
ikari84 Recien nacido


Registrado: 03 Jul 2008 Mensajes: 3 Ubicación: Mexico
|
Publicado: Mie 24/12/2008 Asunto: |
|
|
Hola..
Lo que puedes hacer es utilizar el datasource, para asignar los valores que desees utilizar aunque solo puede utilizar 2 uno que se va mostrar y puede utilizarse como valor, y otro que solo puede ser utilizado como valor.
Por ejemplo supongamos que en tu consulta sea Articulo, Precio, entonces al hacer la consulta rellenas el dataset..
| Código: |
SqlCEConnection conn = new SqlCEConnection(@"Data source='\Mibase.sdf'");
Dataset dt;
SqlCeAdapter adap;
conn.open();
SqlCECommand cmd = new SqlCEComman("SELECT Articulo,Precio FROM Articulos",conn);
adap.fill(dt,"Articulos");
combox1.Datasource=dt;
combox1.Membervalue = "Precio";
combox1.Displaymember = "Articulo";
//Asignas el valor al cambiar de articulo en combobox
txtbox1.Text = combobox1.Selectedvalue.toString();
|
Espero que te sirva.. |
|
| Volver arriba » |
|
 |
|
|
|
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
|
|
 |
|
|
 |
|