asp.net - simple - escribir comillas en vb
Cómo usar comillas simples en cadena de formato Eval (4)
Tengo un repetidor y su SqlDatasource anidado dentro de un Gridview TemplatedField.
La opción SelectCommand del origen de datos del Repeater se establece utilizando FormatString de una Eval de la vista Grid.
SelectCommand tiene una cláusula WHERE que consiste en comparar una cadena.
Como ya he utilizado las comillas simple y doble, tengo problemas para delimitar la cadena en la cláusula WHERE de SQL.
¿Cómo agrego comillas simples dentro de una Eval FormatString?
He intentado usar '' Reemplazar ''.
He intentado usar '' Caracteres Especiales '' (... WHERE StringField = ''{0}'' ...)
Sin suerte hasta ahora. Agradezco cualquier ayuda que pueda ofrecer.
<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>
¿Has intentado escapar de los caracteres de comillas simples?
... WHERE (StringField = /'{0}/') ...
¿Por qué no defines esta cláusula WHERE como una constante en tu código? Definir:
protected const string SELECTCLAUSE =
"SELECT Blah FROM TableName WHERE (StringField = ''{0}'')";
Entonces su propiedad SelectCommand sería:
SelectCommand=''<%# Eval("Bar", SELECTCLAUSE ) %>''
Almacene sus consultas sql en propiedades en su clase de página. No solo funciona :-) sino que hace que tu código sea más fácil de leer y mantener.
Ah, y debería usar parámetros en sus consultas en lugar de hacer reemplazos de cadena. Eso resolverá el problema eliminando la necesidad de comillas simples.
No olvide que una página .aspx es simplemente XML. Simplemente escapa de las citas como lo haría normalmente.
Por ejemplo:
<asp:Repeater ID="repeatTheLabel" runat="server">
<ItemTemplate>
<asp:Label ID="Label1" Text="<%# Eval("Id", "This is item ''{0}''.") %>" runat="server" />
</ItemTemplate>
<SeparatorTemplate>
<br />
</SeparatorTemplate>
</asp:Repeater>
Cuando la expresión anterior está unida a datos, el valor entre <%#
y %>
convierte en:
Eval("Id", "This is item ''{0}''.")
... que produce en la página HTML como salida cuando se une a datos con una matriz de objetos con valores de propiedad "Id" de 1 a 5:
Este es el elemento ''1''.
Este es el elemento ''2''.
Este es el elemento ''3''.
Este es el elemento ''4''.
Este es el elemento ''5''.