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()