我有一个Repeater,它的sqlDatasource嵌套在Gridview TemplatedField中.
Repeater的数据源SelectCommand是使用Gridview中Eval的FormatString设置的.
SelectCommand有一个WHERE子句,用于比较字符串.
因为我已经使用了单引号和双引号,所以我无法在sql WHERE子句中分隔字符串.
Repeater的数据源SelectCommand是使用Gridview中Eval的FormatString设置的.
SelectCommand有一个WHERE子句,用于比较字符串.
因为我已经使用了单引号和双引号,所以我无法在sql WHERE子句中分隔字符串.
如何在Eval FormatString中添加单引号?
我尝试过使用’Replace‘.
我尝试过使用’Special Characters‘(… WHERE StringField ='{0}’…)
到目前为止没有运气.我感谢您提供的任何帮助.
<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>
解决方法
不要忘记.aspx页面只是XML.你可以像往常一样逃避报价.
例如:
<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>
当上述表达式是数据绑定时,<%#和%>之间的值.变为:
Eval("Id","This is item '{0}'.")
…当数据绑定带有“Id”属性值为1到5的对象数组时,在HTML页面上生成输出作为输出:
This is item ‘1’. This is item ‘2’. This is item ‘3’. This is item ‘4’. This is item ‘5’.