Usuário com melhor resposta
Link em coluna no gridview

Pergunta
-
Respostas
-
Essa é fácil...
No seu RowDataBound faça a atribuição para o índice da coluna desejada:
e.Row.Cells[2].Style.Add("text-decoration", "underline");
Certo?
Resolveu? Marque a resposta ;)
Dúvidas? Poste aqui!É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"
Eduardo Pires
www.eduardopires.net.br
- Marcado como Resposta pnet segunda-feira, 28 de maio de 2012 19:48
Todas as Respostas
-
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);
}
-
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?
-
-
-
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. -
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.
-
Coloca uma @ na frente!
string path = @"c:\temp\xpto.pdf";
Resolveu? Marque a resposta ;)
Dúvidas? Poste aqui!
É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"
Eduardo Pires
www.eduardopires.net.br
- Editado EduardoPiresMVP segunda-feira, 28 de maio de 2012 12:55
-
O problema que esse evnto está no OnRowDataBound(). Logo, sempre que eu chamar o Grid, ele será executado e eu quero que ele seja executado quando eu clicar em uma determinada linha do Grid. Tentei criar um evento OnDoubleClick, mas não consegui. Como eu faço isso?
-
Fiz de um jeito que tem que funcionar! Implementa ai direitinho que vai resolver:
Exemplo de ASPX com GridView:
<asp:GridView ID="gdvCli" runat="server" OnRowDataBound="gdvCli_RowDataBound"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:LinkButton ID="lnkb" Text="Meulink" OnClick="DownloadFile" runat="server"></asp:LinkButton> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
Exemplo de ASPX.CS:
protected void gdvCli_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { LinkButton lkb = (LinkButton)e.Row.Cells[0].FindControl("lnkb"); lkb.CommandArgument = "teste.pdf"; } } protected void DownloadFile(object sender, EventArgs e) { LinkButton lkb = (LinkButton)sender; string arq = @"C:\temp\" + lkb.CommandArgument; Response.Buffer = false; Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "application/pdf"; Response.AddHeader("Content-Disposition", "attachment; filename=NomeDoPDF.pdf"); Response.TransmitFile(arq); Response.End(); }
Agora você só precisa personalizar esse código com suas suas devidas propriedades.
Resolveu? Marque a resposta ;)
Dúvidas? Poste aqui!É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"
Eduardo Pires
www.eduardopires.net.br
-
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.
-
Se estiver usando um TemplateField use o HeaderText e para sublinhar use Font-Underline="true" como no ex. abaixo:
<asp:TemplateField HeaderText="Link"> <ItemTemplate> <asp:LinkButton Font-Underline="true" ID="lnkb" Text="Meulink" OnClick="DownloadFile" runat="server"></asp:LinkButton> </ItemTemplate> </asp:TemplateField>
Resolveu? Marque a resposta ;)
Dúvidas? Poste aqui!É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"
Eduardo Pires
www.eduardopires.net.br
-
-
Essa é fácil...
No seu RowDataBound faça a atribuição para o índice da coluna desejada:
e.Row.Cells[2].Style.Add("text-decoration", "underline");
Certo?
Resolveu? Marque a resposta ;)
Dúvidas? Poste aqui!É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"
Eduardo Pires
www.eduardopires.net.br
- Marcado como Resposta pnet segunda-feira, 28 de maio de 2012 19:48