ASP.NET GridView - Parte 9

watch_later 22 de abr de 2013

Como passar vários valores usando um GridView HyperLinkField?

Ao trabalhar com GridView no ASP.NET, na maioria das vezes, usamos uma coluna HyperLinkField para navegar de uma página para outra página com alguns valores como argumentos. Aqui, eu explicarei como podemos passar vários parâmetros com um HyperLinkField em um GridView. Para implementar este recurso, você precisa saber sobre o DataNavigationUrlField e propriedades DataNavigateUrlFormatString de HyperLinkField. Vamos supor que você tem um GridView como dado abaixo e você já tem um DataSource no code-behind.
<asp:GridView id="GrdEmp">
    <columns  runat="server" autogeneratecolumns="False" cellpadding="4">
    <asp:boundfield datafield="ID" headertext="ID">
    <asp:boundfield datafield="Name" headertext="Name">
    <asp:boundfield datafield="ParentID" headertext="Base ID">
    </columns>
</asp:GridView>

Vamos considerar o caso de passar um único parâmetro. A primeira coisa que você precisa fazer é adicionar uma coluna HyperLinkField no GridView. Depois disso, você precisa definir o DataNavigationUrlField e propriedades DataNavigateUrlFormatString. Em DataNavigationUrlField, você tem que mencionar o nome do DataField qual deseja se vincular como uma querystring. Em DataNavigateUrlFormatString, você tem que dar a seqüência de URL formatada para a navegação. O conceito é o mesmo aqui como FormatString - a única diferença é que os dados vem de uma DataNavigationUrlField.
<asp:hyperlinkfield text="Details" datanavigateurlfields="ID" 
         datanavigateurlformatstring="/Details.aspx?EmpId={0}" />

No exemplo acima, eu passei um ID como um DataNavingationUrlField. Assim como o GridView liga, para cada linha, a identificação correspondente será ligado como uma seqüência de URL com a identificação do funcionário. O trecho de código para a exibição HTML está logo abaixo:
<a href="http://www.virtualbase.com.br/Default.aspx?EmpID=123">Details</a>

Para adicionar vários parâmetros, você precisa especificar vários DataFields com vírgula (,) separados dentro DataNavigateUrlFields e também precisa fornecer o DataNavigateUrlFormatString com o número correto de argumentos.

<asp:hyperlinkfield datanavigateurlformatstring="/Details.aspx?EmpId={0}&ParentID={1}" 
   datanavigateurlfields="ID,ParentID" text="Details" />












Esta é a saída HTML para um parâmetro HyperLinkField múltiplo:

<a href="http://www.virtualbase.com.br/Default.aspx?EmpID=123&ParentID=765">Details</a>

Para resumir o post, você pode usar DataNavigateUrlFields separados por vírgula passar vários DataFields como parâmetros com o HyperLinkField no GridView. Além disso, você precisa usar uma URL formatada corretamente com DataNavigateURLFormatString.