1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ASP desmembrar array 2D e inserir numa listbox ou combobox.

Discussão em 'Programação' iniciada por Xogun, 2 de Março de 2005. (Respostas: 8; Visualizações: 2011)

  1. Xogun

    Xogun I fold therefore I AM

    Boas ppl tou aqui com um verdadeiro embroglio e até ao momento nao consegui achar solução para isto (nem na cabeça nem na internet). Aqui vai...

    Sakei info da bd de varias colunas, e criei uma array 2D. Até aqui perfeito. Agora o passo seguinte, o qual tou a batalhar, é criar uma combobox ou listbox com os resultados da array.

    alguem me pode "iluminar" agradeço imenso

    Cumps
     
  2. JGAlmeida

    JGAlmeida Folding Colaborator

    Não sei se percebi bem, mas se queres meter uma combo por cada coluna que tens no array há de ser mais ou menos assim:

    Código:
    for i = 0 to (Ubound(array,1)-1) '(numero de linhas)
    
    	response.Write("<select>")
    
    	for j = 0 to (Ubound(array,2)-1) '(numero de colunas)
    		response.Write("<option>" & array(i,j) & "</option>")
    	next
    
    	response.Write("</select>")
    next
    cumps
     
  3. Xogun

    Xogun I fold therefore I AM

    Em cada coluna é facil, o problema é ter tudo numa combobox.
     
  4. JGAlmeida

    JGAlmeida Folding Colaborator

    Então podes fazer assim, vai mostrar uma linha do array por cada linha da dropdown.

    Código:
    response.Write("<select>")
    for i = 0 to (Ubound(array,1)-1) 'percorrer linhas
    
    	response.Write("<option>" ) 
    	for j = 0 to (Ubound(array,2)-1) 'mostrar cada celula da linha
    		response.Write(array(i,j) & " - " ) 
    	next
    
    	response.Write("</option>")
    next
    response.Write("</select>")
    Edit: Não seria mais facil usares uma tabela?
     
  5. Feiticeiro

    Feiticeiro Power Member

    Será que isto funciona:

    <td width="100%" class="geral">
    <select name="Techzone" id="Techzone" class="combo" onChange="javascript:SeleccionarUtilizador('');" tabindex="1">
    <%
    Dim Linha, coluna
    For m = 0 To (ARRAY.length -1)

    Linha = ARRAY(0,M)
    Coluna = ARRAY(1,M)

    %>
    <option value="<%Linha%>"><%Coluna%></option>
    <% Next %>
    </select></td>
     
  6. JGAlmeida

    JGAlmeida Folding Colaborator

    Feiticeiro, isso falha logo pelo seguinte.
    O <option value> é uma parte que não é mostrado na combo. Podes usar, por exemplo, para associar códigos de país ao nome do país, like this:

    <select>
    <option value="PT"> Portugal </option>
    <option value="ES"> Espanha </option>
    </select>

    o user escolhe pelo nome, mas tu vais buscar o código do país :)

    Cumps.
     
  7. Feiticeiro

    Feiticeiro Power Member

    E não é isso que ele pretende? Uma combobox é para se escolher um dos possíveis valores constantes na combo, para depois se fazer algo. E para isso tens um descritivo e um código, que será este último o que irás utilizar internamente no teu programa.
     
  8. Xogun

    Xogun I fold therefore I AM

    Isso é bastante simples feiticeiro, mas o mais importante é saber como populate 2D array numa listbox. O value pode sempre passar juntamente com o resto.

    | ID | obj1 | obj2 | obj3 | Familia |
    | 1 | a | b | c | 111 |
    | 2 | ab | bb | cb | 112 |
    | 3 | ac | bc | cc | 111 |
    | 4 | ad | bd | cd | 111 |

    SQL = "Select obj1, obj2, obj3 From Produtos WHERE Familia LIKE '"111"' Order by obj1, obj2, obj3 Asc"
    Set RS = MyConn.Execute(SQL)

    Myarray = rs.GetRows()

    rs.close
    MyConn.close
    set rs = nothing
    set myconn = nothing

    'isto foi o que mencionaste.

    response.Write("<select>")
    for i = 0 to (Ubound(MyArray,1)-1) 'percorrer linhas

    response.Write("<option>" )
    for j = 0 to (Ubound(MyArray,2)-1) 'mostrar cada celula da linha
    response.Write(MyArray(i,j) & " - " )
    next

    response.Write("</option>")
    next
    response.Write("</select>")

    ' isto foi o que consegui até pedir ajuda

    For i=0 to UBound(MyArray,2)

    Response.write MyArray(0,i) & "<br>"
    Response.write MyArray(1,i) & "<br>"
    Response.write MyArray(2,i) & "<br>"
    Next
     
  9. JGAlmeida

    JGAlmeida Folding Colaborator

    Bem, depois de testar vi que me troquei um bocado nas linhas/colunas do array :D

    Fica aqui uma função para o fazer, agora devidamente testado

    Código:
    sub lista(byval ListaArray)
    	response.Write("<select>")
    	for i = 0 to (Ubound(ListaArray,2)) 
    		response.Write("<option>") 
    		for j = 0 to (Ubound(ListaArray,1)) 
    			if j = Ubound(ListaArray,1) then
    				response.Write(ListaArray(j,i))
    			else
    				response.Write(ListaArray(j,i) & " - " ) 
    			end if
    		next 
    		response.Write("</option>")
    	next 
    	response.Write("</select>")
    end sub
    Cumps
     

Partilhar esta Página