Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/02/2007, 09:53
Avatar de locojars
locojars
 
Fecha de Ingreso: mayo-2002
Mensajes: 265
Antigüedad: 22 años, 6 meses
Puntos: 4
Problemas con ComboBox(Select) creado de una BD

Hola,

Resulta que estoy queriendo crear un efecto parecido al que tiene Access, con sus listas(select).

Lo que he hecho hasta ahorita es que tengo las siguientes funciones:
Código:
        var url = "detalles.php?opcion=lista_config_ventas&tipo="; 
        
       function handleHttpResponse() {
        if (http.readyState == 4) {
              if(http.status==200) 
			  {
                  var results=http.responseText.split("-");
	  			   var selObj = document.getElementById("clasificacion");
				 for (var count = 0; count < results.length; count++)
 					{
     					textValue = (results[count]);
  						optionItem = new Option( textValue, textValue);
   						selObj.options[count] = optionItem;
 					}
 
              }
              }
        }        
       function requestClasifica(ID,valor) {
            var sId = ID;
            http.open("GET", url +  escape(sId) + "&valor=" + valor , true);
            http.onreadystatechange = handleHttpResponse;
            http.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8')
            http.send(null);
        }


function procesar_form(form,esconder)
{
   var valor = form.another_clasi.value;
   var tipo = form.tipo.value;
	requestClasifica(tipo,valor);
	HideContent(esconder);
}

function HideContent(d) {
if(d.length < 1) { return; }
document.getElementById(d).style.visibility='hidden';
}
Y aqui tengo el formulario y la lista
Código:
			<div id="clas" style="posiction:absolute;visibility:visible">
			<select id="clasificacion" name="clasi" size="1" class="lista">
           </select> <a href="javascript:add('lista_clasi','another_clasi');"><img src="img/add.gif" border="0"></a><a href="javascript:borrar_elemento('clasificacion','cclasificacion_eng')"><img src="img/delete.gif" border="0"></a>
           </div>
   			<div id="lista_clasi" style="position:absolute;visibility:hidden">
   			<form name="f1" method="GET">
   			<input type="hidden" name="tipo" value="cclasificacion_eng">
			<input type="text" id="another_clasi" name="another_clasi" size="25" class="datos">
			<input type="button" value="Agregar" onClick="procesar_form(this.form,'lista_clasi')" name="boton" class="boton">
			<input type="button" value="Cancelar" onclick="HideContent('lista_clasi')" class="boton">
			</form>
			</div>
Esta funcion va a insertar un elemento y actualiza la lista, hasta ahi todo bien, el problema es cuando quiero borrar un elemento, lo que he hecho es crear una opcion en un archivo y ahi mandar a borrar. El elemento lo borra bien, pero al mandar a llamar la funcion para que me recargue los valores, me duplica el ultimo valor
Código:
function borrar_elemento(id,tipo)
{
    var selObj = document.getElementById(id);    
    var selIndex = selObj.selectedIndex;
    http3.open("GET", "detalles.php?opcion=borrar&nombre=" + selObj.options[selIndex].value, true);
    http3.onreadystatechange = cargar1;
    http3.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8')    
    http3.send(null);
    
}

function cargar1()
{
          if (http3.readyState == 4) {
              if(http3.status==200) 
			  {
			   
requestClasifica('cclasificacion_eng','vacio');
				}
			}	
}
No he podido lograr averiguar porque me carga doble el ultimo valor de la lista, si alguien tiene algo mas sencillo y me puede ayudar les agradeceria mucho.

Saludos,
Jorge.