DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
PJava
 

País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1424
 Postado em: 25/5/2012 4:59:58 PM

Como eu faço em C#(CodeBehind) para fazer com uma determinada coluna de um GridView seja um link para um path determinado em minha máquina?
PJava
 

País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1424
 Postado em: 25/5/2012 5:13:53 PM
Eu fiz isso, mas não colocou o sublinhado em baixo do texto e nem mudou para a cor azul e a cor do nome da coluna mudou para black. Abaixo o código:

protected void yourGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
HyperLink hlControl = new HyperLink();
hlControl.Text = e.Row.Cells[2].Text;
hlControl.NavigateUrl = http://www.stackoverflow.com;
e.Row.Cells[2].Controls.Add(hlControl);
}


 
Joel Rodrigues
 
 
 


País: Brasil
Estado: RN
Cidade: Natal
Mensagens: 3112
 Postado em: 25/5/2012 5:16:33 PM
Experimente criar uma coluna do tipo Template e botar o HyperLink direto nela, em tempo de design.

 
PJava
 

País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1424
 Postado em: 25/5/2012 5:36:19 PM
Desculpe Joel, pela minha ignorância, mas como eu faço isso?

 
PJava
 

País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1424
 Postado em: 25/5/2012 5:56:34 PM
Na linha:
hlControl.NavigateUrl..
Se eu ponho assim:

hlControl.NavigateUrl = www.meusite.com; O HyperLink funciona, porem se ponho assim:

hlControl.NavigateUrl = minhavariavel.MeuPath.ToString(); O HyperLink não funciona.

Porque isso acontece?

 
Joel Rodrigues
 
 
 


País: Brasil
Estado: RN
Cidade: Natal
Mensagens: 3112
 Postado em: 25/5/2012 6:07:32 PM
Hum, vejamos...
tenta botar ´file://´ antes do path.

 
PJava
 

País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1424
 Postado em: 25/5/2012 6:48:40 PM
Perdão, é que houve um erro na aplicação e a variável estava vindo nula. Já corrigi e agora só falta como sublinhar o HyperLink, mudar a cor dele e a cor da fonte do nome da coluna. Quando virou HyperLink, ela mudou de cor de white para black.

 
PJava
 

País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1424
 Postado em: 25/5/2012 7:08:19 PM
Coloquei um path fixo e a mensagem que veio foi:
O Firefox não sabe como abrir este endereço.
O protocolo d não está associado a nenhum aplicativo.

O path completo é:

D:\Apostilas\HTML.pdf

 
Joel Rodrigues
 
 
 


País: Brasil
Estado: RN
Cidade: Natal
Mensagens: 3112
 Postado em: 25/5/2012 7:25:49 PM
Você usou o file:// no início como eu falei?

 
PJava
 

País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1424
 Postado em: 28/5/2012 8:31:58 AM
fiz assim:
file://D:\\Meu_Path\Meu_Arquivo.pdf e nada acontece.
fiz também:
file://D://Meu_Path//Meu_Arquivo.pdf e nada também.
fiz também:
file://D:/Meu_Path/Meu_Arquivo.pdf e nada também.
fiz também:
file://D:\Meu_Path\Meu_Arquivo.pdf assim dá erro de sequencia de escape não reconhecida.

 
Joel Rodrigues
 
 
 


País: Brasil
Estado: RN
Cidade: Natal
Mensagens: 3112
 Postado em: 28/5/2012 8:48:26 AM
A mensagem é a mesma que você citou acima?
Tente ´´file://D:\\Meu_Path\\Meu_Arquivo.pdf´´

 
PJava
 

País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1424
 Postado em: 28/5/2012 9:49:32 AM
Assim não funcionou, mas fiz desse jeito, que um amigo meu me passou, mas abre direto. Deveria abrir apenas quando eu clicasse na coluna do GridView e quando abro a página já abre o arquivo. Até porque esse arquivo será passado via variável, então deveria criar algum evento para isso:
abaixo o código, mas não sei se isso é o correto. Só sei que ele abre o path, mas ao abrir a página, já abre o arquivo:

string arq = D:\\Meu_Path\\Meu_Arquivo.pdf;
Response.Clear()
Response.ContentType = application/pdf
//Response.AddHeader(Content-Disposition, inline; filename= & Right(Now.Ticks, 6) & .pdf) - Não funciona
//Response.AddHeader(Content-Length, arq.Length.ToString())-Não funciona
Response.Flush()
Response.WriteFile(arq.FullName) em lugar de FullName(Não funciona) eu fiz: arq.ToString();

Desse jeito, abre, mas sem que eu clique no Grid, já abre direto. Acho que é o Flush(), não sei vou testar tudo.

 
Joel Rodrigues
 
 
 


País: Brasil
Estado: RN
Cidade: Natal
Mensagens: 3112
 Postado em: 28/5/2012 11:43:35 AM
Cara, essa forma aí não tem muito sentido para o que você quer. Ao invés do path puro, tente usar um script JS para fazer o link (na coluna, não nessa forma que lhe indicaram).

 
PJava
 

País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1424
 Postado em: 28/5/2012 3:08:17 PM
Fiz uma nova aspx e coloquei o código em questão no Page_Load, assim:

string arq = Var_Do_Path + Var_Do_Arquivo;
Response.Clear();
Response.ContentType = application/pdf;
.....

E na chamada dessa página passei os parâmetros para alimentar essa chamada. É que o Response, estava apagando meu html e aí dava tilt. Então quando eu clico no HyperLink do Grid, eu passo pela Url da página o parâmetro para carregar no banco(query) e trazer o arquivo correto. Agora mais uma pergunta, porque hyperlink não estã sublinhado? E não consigo mudar o nome da coluna, ela vem com o nome Nome e não Comunicado, conforme passei no Columns.Caption.

 
PJava
 

País: Brasil
Estado: SP
Cidade: Artur
Mensagens: 1424
 Postado em: 28/5/2012 7:06:09 PM
Fiz isso e funcionou:

e.Row.Cells[2].Style.Add(text-decoration, underline);

Porem as fontes dos headers do Grid ficaram todas pretas e não vermelhas como deveriam.

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03