2

このサイトを何年も使用しており、常に非常に役立つと感じており、通常、サイトを読むことですべての質問に答えてくれます.

サイトの他のセクションに関連する必要があるサイトのケーススタディがいくつかあり、このコードを使用してデータベースからレコードを取得しています:-

    <div id="sidebar">
  <asp:accessdatasource
    id="cskey"
    runat="server"
    datasourcemode="DataSet"
    datafile="_db/db.mdb"
    selectcommand="SELECT id FROM markets_case_assign WHERE productid = @catid">
    <SelectParameters>
      <asp:QueryStringParameter Name="catid" QueryStringField="id" DefaultValue="1" />
    </SelectParameters>
  </asp:accessdatasource>
  <asp:Repeater id="cskeycontent" runat="server" DataSourceID="cskey">
    <ItemTemplate>
      <asp:Label ID="Label1" runat="server" Visible="false" Text='<%#Eval("id")%>'></asp:Label>
      <asp:accessdatasource
    id="csval"
    runat="server"
    datasourcemode="DataSet"
    datafile="_db/db.mdb"
    selectcommand="SELECT id,title,company FROM casestudies WHERE id = @pid">
        <SelectParameters>
          <asp:controlparameter name="pid" controlid="Label1" DefaultValue="1" />
        </SelectParameters>
      </asp:accessdatasource>
      <asp:Repeater id="csvalcontent" runat="server" DataSourceID="csval">
        <ItemTemplate>
          <div class="case-studies">
            <h2><%#Eval("company")%></h2>
            <p><%#Eval("title")%></p>
            <p class="no-margin-bottom"><a href="case-study.aspx?id=<%#Eval("id")%>" class="read-more">Read case study</a></p>
          </div>
        </ItemTemplate>
      </asp:Repeater>
    </ItemTemplate>
  </asp:Repeater>
</div>

もっと簡単な方法がないか考えてみました。

どんな助けでも大歓迎です。

乾杯アンディ

4

1 に答える 1

0

1つのクエリだけでそれを行う方法があるかどうか疑問に思っていました

1 つのクエリにするには、SQL 呼び出しを次のように変更します。

SELECT id,title,company FROM casestudies 
  WHERE id IN (SELECT id FROM markets_case_assign WHERE productid = @catid)

1 つのリピーター (内側のリピーター) のみを使用します。

これで、余分なヘッダーや行などでそれらを分離するための余分な高度が失われます..

于 2013-05-22T09:18:11.993 に答える