Usuário com melhor resposta
Como utilizar o LinkButton no Gridview?

Pergunta
-
Boa dia!
Como faço para utilizar o linkbutton para abrir arquivos que estão sendo coolcados para dentro de uma coleção List<>, o qual é o datasource da minha gridview.
Abaixo está minha grid, e coloquei o linkbutton que está em "vermelho", o qual apresenta o campo 'name' na tela e deve pegar o campo url (que é o caminho do arquivo) para abri-lo.
Se alguém puder me ajudar, agradeço!
valeu!
<asp:GridView ID="gvAnexos" AutoGenerateColumns="False"
AllowPaging="True" GridLines="Vertical"
CssClass="GridViewStyle" Width="100%" CellPadding="3"
onrowdeleting="gvAnexos_RowDeleting"
onrowediting="gvAnexos_RowEditing"
OnRowCommand="gvAnexos_RowCommand"
runat="server">
<RowStyle CssClass="RowStyle"/>
<SelectedRowStyle CssClass="SelectedRowStyle" />
<HeaderStyle CssClass="HeaderStyle" />
<AlternatingRowStyle CssClass="AltRowStyle" />
<Columns>
<asp:TemplateField HeaderText="Tipo">
<ItemTemplate>
<asp:ImageButton ID="imbTipo" runat="server" ImageUrl='<%# GetImage(Eval("ShortCutOnly").ToString())%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Arquivo">
<ItemTemplate>
<asp:LinkButton ID="lkbAbrirAnexo" runat="server" Text='<%# (Eval("name").ToString()%>'
CommandArgument='<%# DataBinder.Eval(Container.DataItem, "url")%>' CommandName="url">
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="rating" HeaderText="Clas." SortExpression="rating">
</asp:BoundField>
<asp:BoundField DataField="filesize" HeaderText="Tamanho" SortExpression="filesize">
</asp:BoundField>
<asp:BoundField DataField="filedate" HeaderText="Data" SortExpression="filedate" DataFormatString="{0:dd/MM/yyyy}">
</asp:BoundField>
<asp:BoundField DataField="title" HeaderText="Titulo" SortExpression="title">
</asp:BoundField>
<asp:BoundField DataField="subject" HeaderText="Assunto" SortExpression="subject">
</asp:BoundField>
<asp:CommandField HeaderText="Opções" ButtonType="Image" DeleteImageUrl="Imagens/trash.gif"
EditImageUrl="Imagens/alterar.gif" ShowEditButton="True" ShowDeleteButton="True" />
</Columns>
</asp:GridView>
falleirok
Respostas
-
Valeu pela força!
Mas quando tento usar o <href> dá erro! Na minha Grid vai estar escrito apenas o nome do arquivo, que vem da propriedade anexos.url, mas para abrir o arquivo preciso usar o anexos.url (que é o caminho do arquivo). Como faço isso? Conseguindo passar o url ou mesmo o rowindex da grid já me ajuda.
Tentei assim:
<asp:LinkButton ID="lkbAbrirAnexo" runat="server" Text='<%# Eval("name")%>' CommandArgument='<%# Eval("url")%>' CommandName="url"></asp:LinkButton>
ou
<asp:LinkButton ID="lkbAbrirAnexo" runat="server" Text='<%# Eval("name")%>' CommandArgument='<%# DataBinder.Eval(Container.DataItem, "url"%>' CommandName="url"></asp:LinkButton>
Os dois modos dá erro, e o tal do DataBinder nem sei o que faz!
Só que não consigo pegar o valor URL, pois no campo Arquivo da grid vão estar os anexos.name.
Tomara que eu tenha conseguido me explicar.
Obrigado de novo!
falleirok- Marcado como Resposta falleirok quinta-feira, 19 de fevereiro de 2009 21:06
Todas as Respostas
-
falleirok disse:
Boa dia!
Como faço para utilizar o linkbutton para abrir arquivos que estão sendo coolcados para dentro de uma coleção List<>, o qual é o datasource da minha gridview.
Abaixo está minha grid, e coloquei o linkbutton que está em "vermelho", o qual apresenta o campo 'name' na tela e deve pegar o campo url (que é o caminho do arquivo) para abri-lo.
Se alguém puder me ajudar, agradeço!
valeu!
<asp:GridView ID="gvAnexos" AutoGenerateColumns="False"
AllowPaging="True" GridLines="Vertical"
CssClass="GridViewStyle" Width="100%" CellPadding="3"
onrowdeleting="gvAnexos_RowDeleting"
onrowediting="gvAnexos_RowEditing"
OnRowCommand="gvAnexos_RowCommand"
runat="server">
<RowStyle CssClass="RowStyle"/>
<SelectedRowStyle CssClass="SelectedRowStyle" />
<HeaderStyle CssClass="HeaderStyle" />
<AlternatingRowStyle CssClass="AltRowStyle" />
<Columns>
<asp:TemplateField HeaderText="Tipo">
<ItemTemplate>
<asp:ImageButton ID="imbTipo" runat="server" ImageUrl='<%# GetImage(Eval("ShortCutOnly").ToString())%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Arquivo">
<ItemTemplate>
<asp:LinkButton ID="lkbAbrirAnexo" runat="server" Text='<%# (Eval("name").ToString()%>'
CommandArgument='<%# DataBinder.Eval(Container.DataItem, "url")%>' CommandName="url">
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="rating" HeaderText="Clas." SortExpression="rating">
</asp:BoundField>
<asp:BoundField DataField="filesize" HeaderText="Tamanho" SortExpression="filesize">
</asp:BoundField>
<asp:BoundField DataField="filedate" HeaderText="Data" SortExpression="filedate" DataFormatString="{0:dd/MM/yyyy}">
</asp:BoundField>
<asp:BoundField DataField="title" HeaderText="Titulo" SortExpression="title">
</asp:BoundField>
<asp:BoundField DataField="subject" HeaderText="Assunto" SortExpression="subject">
</asp:BoundField>
<asp:CommandField HeaderText="Opções" ButtonType="Image" DeleteImageUrl="Imagens/trash.gif"
EditImageUrl="Imagens/alterar.gif" ShowEditButton="True" ShowDeleteButton="True" />
</Columns>
</asp:GridView>
falleirok
Ola
Eu recomendo utilizar uma tag href mesmo para direcionar para a url:
<asp:GridView ID="gvAnexos" AutoGenerateColumns="False"
AllowPaging="True" GridLines="Vertical"
CssClass="GridViewStyle" Width="100%" CellPadding="3"
onrowdeleting="gvAnexos_RowDeleting"
onrowediting="gvAnexos_RowEditing"
OnRowCommand="gvAnexos_RowCommand"
runat="server">
<RowStyle CssClass="RowStyle"/>
<SelectedRowStyle CssClass="SelectedRowStyle" />
<HeaderStyle CssClass="HeaderStyle" />
<AlternatingRowStyle CssClass="AltRowStyle" />
<Columns>
<asp:TemplateField HeaderText="Tipo">
<ItemTemplate>
<asp:ImageButton ID="imbTipo" runat="server" ImageUrl='<%# GetImage(Eval("ShortCutOnly").ToString())%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Arquivo">
<ItemTemplate>
<a href='<%# Eval("url") %>' target="_blank"><%# Eval("name") %></a>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="rating" HeaderText="Clas." SortExpression="rating">
</asp:BoundField>
<asp:BoundField DataField="filesize" HeaderText="Tamanho" SortExpression="filesize">
</asp:BoundField>
<asp:BoundField DataField="filedate" HeaderText="Data" SortExpression="filedate" DataFormatString="{0:dd/MM/yyyy}">
</asp:BoundField>
<asp:BoundField DataField="title" HeaderText="Titulo" SortExpression="title">
</asp:BoundField>
<asp:BoundField DataField="subject" HeaderText="Assunto" SortExpression="subject">
</asp:BoundField>
<asp:CommandField HeaderText="Opções" ButtonType="Image" DeleteImageUrl="Imagens/trash.gif"
EditImageUrl="Imagens/alterar.gif" ShowEditButton="True" ShowDeleteButton="True" />
</Columns>
</asp:GridView>
[]'s
Valdek Santos Santana Junior.- Sugerido como Resposta Valdek Santos Santana Junior quarta-feira, 18 de fevereiro de 2009 16:04
-
Para trabalhar com o Link Button, você deve tratar o evento RowCommand do GridView.
void GridView_RowCommand(object sender, RowCommandEventArgs e) { string url = e.CommandArgument as string; Response.Redirect("url); }
[]'s
Valdek Santos Santana Junior.- Sugerido como Resposta Valdek Santos Santana Junior quarta-feira, 18 de fevereiro de 2009 16:04
-
Perfeito!
Mas não quero abrir uma nova página, quero abrir o arquivo que está na propriedade 'url' da minha classe de anexos.
O campo headertext="Arquivo' recebe o campo 'name' do arquivo adiocionado à minha coleção de List<>, o qual é o datasource da gridview. Quero ao clicar no linkbutton do campo "Arquivo" passar a propriedade 'URL' que tem o caminho dos arquivos.
Como faço para abrir um arquivo? se for .DOC, vai abrir o Word, .XLS, vai abrir o Excel, etc.
Obrigado!
falleirok -
Ola.
Desculpa, acho que não entendi direito (desculpe a correria)...
Não entendi direito o desenrolar do HeaderText, classe, anexo etc mas:
Se você criar uma url assim:
<a href='<%# Eval("url") %>'>Download</a>
onde Eval("url") = "CaminhoPasta/arquivoWord.docx" ou "CaminhoPasta/arquivoPDF.pdf"
Quando você clicar, o navegador vai identificar qual é a extensão do arquivo e
abrir com o programa correspondente. Sendo assim, você não precisa se
preocupar quando a extensão for doc ou pdf.
Eu recomendo utilizar o target="_blank" pois, se o usuário está em uma tela de
consulta de documentos e tentar abrir o pdf errado, isso pode custar tempo
para abrir o pdf e ver que não é o documento correto. Além disso, ele terá
que clicar no botão Voltar do navegador e nem sempre os dados e os parametros
de consulta ficarão por la.
[]'s
Valdek Santos Santana Junior.- Sugerido como Resposta Valdek Santos Santana Junior quarta-feira, 18 de fevereiro de 2009 17:16
-
Valeu pela força!
Mas quando tento usar o <href> dá erro! Na minha Grid vai estar escrito apenas o nome do arquivo, que vem da propriedade anexos.url, mas para abrir o arquivo preciso usar o anexos.url (que é o caminho do arquivo). Como faço isso? Conseguindo passar o url ou mesmo o rowindex da grid já me ajuda.
Tentei assim:
<asp:LinkButton ID="lkbAbrirAnexo" runat="server" Text='<%# Eval("name")%>' CommandArgument='<%# Eval("url")%>' CommandName="url"></asp:LinkButton>
ou
<asp:LinkButton ID="lkbAbrirAnexo" runat="server" Text='<%# Eval("name")%>' CommandArgument='<%# DataBinder.Eval(Container.DataItem, "url"%>' CommandName="url"></asp:LinkButton>
Os dois modos dá erro, e o tal do DataBinder nem sei o que faz!
Só que não consigo pegar o valor URL, pois no campo Arquivo da grid vão estar os anexos.name.
Tomara que eu tenha conseguido me explicar.
Obrigado de novo!
falleirok- Marcado como Resposta falleirok quinta-feira, 19 de fevereiro de 2009 21:06
-