Comment utiliser les apostrophes dans les Eval Chaîne de Format
J'ai un Répéteur et ses SqlDatasource imbriquée à l'intérieur d'un Gridview TemplatedField.
La Répétition de la source de données SelectCommand est défini à l'aide de la FormatString d'une Eval de la Gridview.
Le SelectCommand a une clause where qui est de comparer une chaîne de caractères.
Parce que j'ai déjà utilisé les guillemets simples et doubles, je vais avoir de la difficulté à délimiter la chaîne dans la clause where.
Comment puis-je ajouter des guillemets à l'intérieur d'un Eval FormatString?
J'ai essayé d'utiliser 'Remplacer'.
J'ai essayé d'utiliser 'Caractères Spéciaux' (... OÙ StringField = '{0}' ...)
Pas de chance jusqu'à présent. J'apprécie toute l'aide que vous pouvez être en mesure d'offrir.
<asp:GridView ID="GridView1" runat="server" DataSourceID="DataSource1" DataKeyNames="Foo" AutoGenerateColumns="False" AllowSorting="true" >
<Columns>
<asp:BoundField DataField="Foo" HeaderText="Foo" SortExpression="Foo" />
<asp:BoundField DataField="Bar" HeaderText="Bar" SortExpression="Bar" />
<asp:TemplateField>
<ItemTemplate>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="DataSourceNested">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Blah") %>'></asp:Label>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="DataSourceNested" runat="server" DataFile="~/App_Data/DatabaseName"
SelectCommand='<%# Eval("Bar", "SELECT Blah FROM TableName WHERE (StringField = {0})") %>' >
</asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
OriginalL'auteur Dhaust | 2008-11-05
Vous devez vous connecter pour publier un commentaire.
N'oubliez pas qu'un .page aspx est simplement XML. Vous venez d'échapper les guillemets comme vous le feriez normalement.
Par exemple:
Lorsque l'expression ci-dessus est lié aux données de la valeur entre
<%#
et%>
devient:...qui produit sur la page HTML en sortie lorsque liées aux données avec un tableau d'objets avec "Id" de la propriété des valeurs de 1 à 5:
C'est étrange, David. L'étiquette de code que j'ai posté il y a été testé et a bien fonctionné.
Je pense que c'est le fait que je suis en train de faire à l'intérieur d'un Eval chaîne de format qui est à l'origine du problème. Se pourrait-il que l'Eval est la conversion de la " " dans le cadre d'un devis et ensuite l'ASP.NET moteur de Rendu est le long et les coups de pied de l'erreur? Je ne suis pas sûr.
David, avez-vous pensé à changer les guillemets autour de la valeur de l'attribut (c'est à dire changer SelectCommand='<%# à SelectCommand="<%# ) lorsque vous vous êtes échappé de la cite?
Aydsman, Joli, qu'il fixe. Je n'avais pas pensé à inverser l'extérieur et à l'intérieur des guillemets comme ça.
OriginalL'auteur Adrian Clark
Stocker vos requêtes sql dans les propriétés de votre classe de la Page. Non seulement ça fonctionne 🙂 mais cela rend votre code plus facile à lire et à maintenir.
Oh, et vous devez utiliser des paramètres dans vos requêtes au lieu de faire de la chaîne de remplacement. Qui permettra de résoudre le problème en supprimant le besoin de guillemets simples.
OriginalL'auteur Rune Grimstad
Pourquoi ne pas définir cette clause where comme const dans votre code-behind. Définir:
Alors votre propriété SelectCommand serait:
OriginalL'auteur Keltex
Avez-vous essayé d'échapper les guillemets simples?
Et juste pour s'assurer que je n'avais pas foiré quelque chose d'autre avec la source de données de la balise, je re-joué SQL à utiliser un nombre Entier dans le OÙ, au lieu d'une chaîne et il a marché parfaitement. Ne pas retourner les données dont j'ai besoin, mais s'est avéré que la source de données declaratiion et SQL n'ont pas éclaté.
OriginalL'auteur Ty.