【发布时间】:2013-07-26 14:24:09
【问题描述】:
希望您今天在从事的任何项目上都有一个良好的开端。我今天从一个有趣的问题开始,我需要解决涉及 ASP.net 中的嵌套中继器(从 SQL 数据库中获取数据以构建与教育和福利相关的赠款数据的网页结果)。
我有一个中继器,它使用 SQL 查询根据我的 SQL 表中的特定列(类别列)拉回数据:
<asp:SqlDataSource ID="SqlDataSourceGrantCategories" runat="server"
ConnectionString="<%$ ConnectionStrings:KenticoCMSECommerceTestingConnectionString %>"
SelectCommand="SELECT * FROM [customtable_SampleTable] ORDER BY Category">
</asp:SqlDataSource>
现在我想要一个额外的嵌套转发器,它有另一个向它提供数据的查询,但是这个内部转发器基于第一个转发器提取的 Category 列(来自 SQL 表)的查询。这是我目前所拥有的:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSourceGrantCategories">
<ItemTemplate>
<%# Eval("Category") %> //I just need this piece of data, but used below.
<br />
<asp:Repeater ID="Repeater2" runat="server" DataSourceID="SqlDataSourceGrantInfo">
<asp:SqlDataSource ID="SqlDataSourceGrantInfo" runat="server" ConnectionString="<%$ ConnectionStrings:KenticoCMSECommerceTestingConnectionString %>
SelectCommand="SELECT * FROM [customtable_SampleTable] WHERE Category = <%# Eval('Category') %>">
<ItemTemplate>
<%# Eval("Title") %>
</ItemTemplate>
</asp:Repeater>
<br />
</ItemTemplate>
</asp:Repeater>
所以基本上,第二个嵌套 SqlDataSource 内的 Eval 语句没有被正确评估,它给了我一个错误,上面写着“服务器标记格式不正确”。有什么方法可以让我使用或使变量等于第一个 Eval("Category") 语句,然后我可以在我的第二个 SQL 查询字符串中使用它?
抱歉,如果这令人困惑,如果需要,我很乐意进一步详细说明。
【问题讨论】: