Comunidad de diseño web y desarrollo en internet online

Problemas obteniendo ID en combo

Citar            
MensajeEscrito el 19 Nov 2010 02:05 am
Buenas noches amigos de Cristalab...

BUeno, sucede que estoy trabajando en un sitio web el cual tiene una pagina de registro donde entergo al usuario un combo con los paises para que seleccione su pais de origen. El combo lo estoy llenando desde la base de datos conectandome con BlazeDS.

Tengo ademas un segundo combo que se llena con las ciudades dependiendo de los paises, la relacion en la base de datos esta bien hecha, ha sido probada muchas veces, tanto desde JPA como desde la misma Base de datos. Quiero que cuando el usuario seleccione algun pais, en el siguiente combo se me carguen las ciudaddes correspondientes al pais seleccionado. Para ellos es obvio que debere tomar la llave primaria del pais y traer las ciudades con esa llave respecto a la relacion que tengo en la base de datos, sin embargo no se como almacenar por debajo de la vista del usuario el id.... en html, seria algo como:
<select>
<option value="IdPais">
Colombia
</option>
</select>

Quisiera saber de que forma puedo almacenar el IdPais que viene de la base de datos en el combo.

A continuacion esta el codigo en cuestion:


<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;

import spark.events.IndexChangeEvent;

protected function java_faultHandler(event:FaultEvent):void
{
cursorManager.removeBusyCursor();
}

private function result(e:ResultEvent):void{
Alert.show(e.result.toString());
jpa2.cargarPaisV();
}


protected function dg_creationCompleteHandler(event:FlexEvent):void
{

jpa2.addEventListener(FaultEvent.FAULT, java_faultHandler);
jpa2.addEventListener(ResultEvent.RESULT, cargarDg);
jpa2.cargarPaisV();
}

private function cargarDg(e:ResultEvent):void{
var d:ArrayCollection = e.result as ArrayCollection;
dg.dataProvider = d;
cmb.dataProvider = d;
cmb0.dataProvider = d;
}


protected function cmb_changeHandler(event:IndexChangeEvent):void
{
t1.text = cmb.selectedItem.paisNombre.toString();
}

]]>
</fx:Script>
<fx:Declarations>
<s:RemoteObject id="java" destination="JAVA"
showBusyCursor="true"
fault="java_faultHandler(event)"
/>
<s:RemoteObject id="jpaingreso" destination="jpa" showBusyCursor="true"
fault="java_faultHandler(event)"
/>
<s:RemoteObject id="jpa2" destination="jpa2" showBusyCursor="true"
fault="java_faultHandler(event)"
/>
</fx:Declarations>
<s:TextInput x="10" y="10" id="t1"/>
<s:Button x="146" y="10" label="Button" click="button1_clickHandler(event)"/>
<mx:DataGrid x="10" y="39" id="dg" creationComplete="dg_creationCompleteHandler(event)">
<mx:columns>
<mx:DataGridColumn headerText="Column 1" dataField="idPais"/>
<mx:DataGridColumn headerText="Column 2" dataField="paisNombre"/>
</mx:columns>
</mx:DataGrid>
<s:ComboBox x="249" y="39" id="cmb" name="bcbcv" labelField="paisNombre" change="cmb_changeHandler(event)"/>
<s:ComboBox x="249" y="88" id="cmb0" name="bcbcv" labelField="idPais"/>
<s:TextInput x="253" y="134" id="t0"/>

</s:Application>


ESTARE SUPREMAMENTE AGRADECIDO A QUIEN PUEDA AYUDARME YA QUE ES UN PROYECTO PARA MI GRADO Y ES BASTANTE URGENTE...
Hasta pronto

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 19 Nov 2010 07:46 am
Tienes varias opciones, dependiendo de como tengas almacenadas las ciudades en la bdd si cada ciudad es un registro con su respectivo id unico ademas de su id relacionado con su pais, o si tienes un solo registro con su id unico mas su id relacionado con el pais para cada grupo de ciudades de ese pais separadas por ","

yo hago una cosa parecida pero yo no tengo almacenado los paises ni las ciudades en la bdd, yo cargo los paises y las ciudades desde XML y luego guardo los paises y ciudades seleccionadas en la bdd

De la manera que lo tienes montado yo lo que aria seria lo siguiente

selecciono un pais desde el combo recupero las ciudades relacionadas y si no quieres complicarte la vida con el id cuando recuperes las ciudades y las cargues en el combo hazlo cargando como label nombreciudad y como data nombreciudad

cuando selecciones una ciudad por ejemplo "Valencia" guardala tal cual en la bdd
y luego para seleccionar automaticamente en el combobox, primero cargas las ciudades y buscas la ciudad seleccionada en la bdd

y realizas una comparacion con una funcion como esta

le pasas el combobox y la data "valencia" para que te seleccione automaticamente la ciudad en el combobox

function cmbSelectData(objCmb:Object, cmbData:String):void {
for (var xs=0; xs<objCmb.length; xs++) {
objCmb.selectedIndex = xs;
if (objCmb.value == cmbData) {
objCmb.selectedIndex = xs;
break;
} else if (xs >=objCmb.length-1) {
objCmb.selectedIndex = 0;
}
}
}

tambien lo puedes hacer con el id o de otras formas, recupera las ciudades y luego le asignas los id a la data de cada elemento del combo y almacenas el id seleccionado en la bdd o si tienes grupos de ciudades separados por coma las conviertes en array y le asignas como id el orden en el que se encuentre dentro del array

se que esto no es una solucion en mano a tu problema pero alomejor te aporto un poco de luz

saludos

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.