希望今天在您正在使用的任何項目上有一個良好的開端。今天我開始着手解決一個有趣的問題,我需要解決一個涉及到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>
所以基本上,第二里面的eval語句,嵌套的SqlDataSource沒有被正確的評估,它給我它說「服務器標籤不規範的錯誤」。有沒有什麼辦法讓我使用或創建一個變量等於第一個Eval(「Category」)語句,然後我可以在我的第二個SQL查詢字符串中使用它?
對不起,如果這是令人困惑,我很樂意詳細闡述如果需要進一步。
謝謝安德烈,非常好的答案,我現在將看看並使用此代碼。我會考慮使用SelectParameters,但是tbh我不知道那是甚麼。我猜還是一個ASP新手。再次感謝! – DNAInstant
@ user2390929,找出SelectParameters,看看IntelliSense將你建議爲「」的內部標籤。 –
Andrei
Andrei,看起來像你的代碼工程。我知道這是簡單的,我在這裏失蹤了,就像在那裏使用C#代碼構建整個字符串,而不是僅僅採用單一值。那就是在那裏解決問題的方法,好的想法和好的解決方案。 – DNAInstant