2010-08-19 1 views
1

Je sais que vous pouvez utiliser le signe d'exclamation pour lier ensemble de types simples (comme chaîne) GridView comme celui-ciRelier GridView au tableau de chaînes. Problème avec HyperLinkField

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundField HeaderText="Array Field" DataField="!" /> 
    </Columns>  
</asp:GridView> 

Mais cela ne semble pas être le cas avec DataNavigateUrlFields

<asp:HyperLinkField DataNavigateUrlFields="!" DataNavigateUrlFormatString="RoleInformation.aspx?role={0}" Text="Manage users" /> 

et je reçois l'erreur suivante:

A field or property with the name '!' was not found on the selected data source.

Répondre

2

la plupart des gens ont probablement savent même pas utiliser le ! Fiel Je soupçonne. Quand j'ai lu votre question, cela m'a fait me souvenir de cette caractéristique que j'avais lu mais que je n'avais jamais utilisée. Dans cet esprit, je ne pense pas qu'il existe un moyen avec ce type de champ, car il a probablement été oublié dans l'implémentation HyperLinkField (juste une supposition). Vous pouvez tout simplement faire une conversion rapide à la propriété du nom et vous n'avez des questions:

Exemple:

<asp:GridView ID="grdTest" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundField HeaderText="Array Field" DataField="data" /> 
     <asp:HyperLinkField DataNavigateUrlFields="data" DataNavigateUrlFormatString="RoleInformation.aspx?role={0}" Text="Manage users" /> 
    </Columns>  
</asp:GridView> 

Notez que le champ nommé data. Ensuite, pour lier votre tableau le faire:

string[] testArray = { "1", "2", "3" }; 
grdTest.DataSource = testArray.Select(a => new { data = a }); 
grdTest.DataBind(); 

Il ne remplace pas le ! directement, mais il est une solution simple pour obtenir la liaison autour de simples tableaux qui seront toujours fonctionner même lorsque le ! n'est pas mis en œuvre dont elle doit probablement être pour chaque type de champ.

+0

C'est presque ce que j'ai fait pour l'instant –

+0

@Sergej Andrejev Je ne pense pas qu'il y ait vraiment un autre moyen. Si vous trouvez un moyen d'obtenir le '!' Travail laisser un commentaire, mais je ne pense tout simplement pas qu'il a été mis en œuvre. – Kelsey