Array
(
)

Link em uma coluna de um gridview

Pjava
   - 25 mai 2012

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
   - 25 mai 2012

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);
}

0
|
0

Joel Rodrigues
   - 25 mai 2012

Experimente criar uma coluna do tipo Template e botar o HyperLink direto nela, em tempo de design.

0
|
0

Pjava
   - 25 mai 2012

Desculpe Joel, pela minha ignorância, mas como eu faço isso?

0
|
0

Pjava
   - 25 mai 2012

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?

0
|
0

Joel Rodrigues
   - 25 mai 2012

Hum, vejamos...
tenta botar ´file://´ antes do path.

0
|
0

Pjava
   - 25 mai 2012

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.

0
|
0

Pjava
   - 25 mai 2012

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

0
|
0

Joel Rodrigues
   - 25 mai 2012

Você usou o file:// no início como eu falei?

0
|
0

Pjava
   - 28 mai 2012

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.

0
|
0

Joel Rodrigues
   - 28 mai 2012

A mensagem é a mesma que você citou acima?
Tente ´´file://D:\\Meu_Path\\Meu_Arquivo.pdf´´

0
|
0

Pjava
   - 28 mai 2012

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.

0
|
0

Joel Rodrigues
   - 28 mai 2012

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).

0
|
0

Pjava
   - 28 mai 2012

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.

0
|
0

Pjava
   - 28 mai 2012

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.

0
|
0