PROBLEMAS COM LISTINDEX DO LISTBOX

LUISFORUM 14/09/2011 15:32:33
#384253
Tenho um rotina que gera arquivos de acordo com parametros informados.

Criei um Listbox e carreguei com um diretorio dos arquivos gerados,
ate ai tudo bem, ocorre que quando seleciono um item e clico no botão para baixar este arquivo, o listindex não reconhece o item selecionado ou se atribui um valor ao index , ele nao muda.

[ô]função para baixar o arquivo selecionado (botão)

Protected Sub btnBaixar_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBaixar.Click

If lsbArquivos.SelectedIndex <> -1 Then

Dim pasta As New System.IO.DirectoryInfo(mydocpath)
Dim arquivo As New FileInfo(pasta.FullName + [Ô]\[Ô] + lsbArquivos.SelectedValue)

[ô]Limpa o conteúdo de saída atual do buffer
Response.Clear()

[ô]Adiciona um cabeçalho que especifica o nome default para a caixa de diálogos Salvar Como...
Response.ContentType = [Ô]application/octet-stream[Ô]
Response.AddHeader([Ô]Content-Disposition[Ô], [Ô]attachment; filename=[Ô][Ô][Ô] & arquivo.Name & [Ô][Ô][Ô][Ô])

[ô]Adiciona ao cabeçalho o tamanho do arquivo para que o browser possa exibir o progresso do download
Response.AddHeader([Ô]Content-Length[Ô], arquivo.Length.ToString())
Response.Flush()
Response.WriteFile(arquivo.FullName)

End If
End Sub
KERPLUNK 14/09/2011 15:38:17
#384256
Resposta escolhida
O que é o [Ô]Response[Ô]?
LUISFORUM 14/09/2011 15:59:27
#384261
Response:

Serve para enviar a saida de um objeto para cliente
http://msdn.microsoft.com/en-us/library/ms525405(v=vs.90).aspx
KERPLUNK 14/09/2011 16:16:53
#384263
Ah, sim, entendi.
Vc tem que colocar a propriedade [Ô]AutoPostBack[Ô] como [Ô]True[Ô] nessa dropdown. Mas já vou dando a dica, é melhor vc salvar o arquivo em uma pasta temporária e passar o link no response, ou encaminhar para o caminho com o Response.Redirect
Do modo como está fazendo, pode ter problemas de incompatibilidade, dependendo do browser e OS de quem está usando.
LUISFORUM 14/09/2011 16:26:42
#384264
Ja tentei com AutopostBack= True, o problema é que não sei porque ele não seta o item selecionado no listbox,
Coloquei no mesmo form outro listbox, carreguei com alguns itens, qdo debugava o listbox1 nao seleciona e o listbox2 seleciona, limpei o listbox2 e carreguei o conteudo do listbox1, ai nenhum dos dois selecionava.


LUISFORUM 14/09/2011 16:28:13
#384265
Rotina para carregar listbox:

Dim pasta As New System.IO.DirectoryInfo(mydocpath)
Dim listaArquivos As FileInfo() = pasta.GetFiles()
lsbArquivos.Items.Clear()
lsbArquivos.DataSource = listaArquivos
lsbArquivos.DataBind()
KERPLUNK 14/09/2011 16:55:01
#384269
Não seta o ítem? Tipo, vc seleciona um ítem e o valor dele não é o que é o valor do ítem? Isso?
LUISFORUM 14/09/2011 16:56:12
#384270
Isso
KERPLUNK 14/09/2011 16:59:19
#384271
Verifica se no evento Page_Load não está limpando e preenchendo o combo de novo... O que é o mais provável.
LUISFORUM 14/09/2011 18:29:46
#384281
Sim no Evento Page_Load chamo a rotina anteriomente descrita para carregar o ListBox.
Como não estou utilizando AutopostBack= True, eu penso que o evento só será chamado no carregamento da Pagina.
PEGUDO 15/09/2011 08:09:24
#384303
Cara pelo que eu entend você quer juntar o caminho com o nome da pasta ou arquivo que o usuário escolher na ListBox, correto?

Tenta trocar esta linha:
Dim arquivo As New FileInfo(pasta.FullName + [txt-color=#e80000][Ô]\[Ô][/txt-color] + lsbArquivos.SelectedValue)
por esta:
Dim arquivo As New FileInfo(pasta.FullName + [txt-color=#e80000][Ô]\[Ô][/txt-color] + lsbArquivos.Text)

Acontece que, se o item já estiver selecionado, ou seja, não for -1, o programa reconhece qual o texto relacionado ao item.
Tópico encerrado , respostas não são mais permitidas