I’ve got a Repeater and its SqlDatasource nested inside a Gridview TemplatedField.
The Repeater’s datasource SelectCommand is set using the FormatString of an Eval from the Gridview.
The SelectCommand has a WHERE clause which is to compare a string.
Because I have already used the single and double quotes, I am having trouble delimiting the string in the SQL WHERE clause.
How do I add single quotes inside an Eval FormatString?
I have tried using ‘Replace‘.
I have tried using ‘Special Characters‘ (… WHERE StringField = '{0}' …)
No luck so far. I appreciate any help you may be able to offer.
<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>
Don’t forget that a .aspx page is simply XML. You just escape the quotes as you normally would.
For example:
When the above expression is databound the value between
<%#and%>becomes:…which produces on the HTML page as output when databound with an array of objects with ‘Id’ property values from 1 to 5: