Comment utiliser Eval () avec un nom de colonne qui contient un point (.)?

Dans ma table SQL Server, il y a une colonne slno. (oui, il contient un point) qui fonctionne correctement dans SQL Server. Cependant, <%#Eval("slno.")%> une erreur:

DataBinding: 'System.Data.DataRowView' ne contient pas de propriété portant le nom 'slno'.

Comment cela peut-il être résolu? Je ne peux pas modifier le nom de la colonne dans la database: j'obtiens des données de la stored procedure donc je ne peux pas la modifier.

 <ItemTemplate> <%#Eval("slno.") %> </ItemTemplate> 

utilisation

 <%# ((DataRowView)Container.DataItem)["slno."] %> 

Alternativement utiliser

 <%# DataBinder.Eval (Container.DataItem, "slno.") %> 

Pour la reference MSDN, voir http://msdn.microsoft.com/fr-fr/library/4hx47hfe.aspx

EDIT – Une autre option:

 <%# DataBinder.GetPropertyValue(Container.DataItem, "slno.") %> 

EDIT 2 – selon les commentaires:

AFAIK Eval gère la string comme une expression qu'il évalue en utilisant certaines règles – ces règles ont une manipulation spéciale pour le point …

GetPropertyValue n'applique pas ces règles (ce qui signifie que ce n'est pas un rlocation complet pour Eval AFAIK) ayant ainsi la possibilité de gérer les cas où la gestion des points d' Eval conduit à des problèmes (comme dans ce cas).

J'ai utilisé DataBinder.GetPropertyValue () comme suit:

 DataBinder.GetPropertyValue(Container.DataItem, "Name of my Fields with(Parentheses)") 

et a travaillé comme un charme sur un projet ASP.NET VB.

N'utilisez pas DataBinder.eval() ; eval() ne peut pas lire champ après point (.).

Au lieu de cela, utilisez DataBinder.GetPropertyValue()