0

「国」基準に基づいてすべてのエントリを表示するように Web サイトを取得しようとしています。これが私のコードです:

関連する Default.aspx のコード:

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
                DataFile="~/App_Data/TravelJoansDB.accdb" 
                SelectCommand="SELECT Country, COUNT (*) AS N FROM [Table2] GROUP BY Country">
</asp:AccessDataSource>
     <asp:DataList ID="DataList1" DataSourceID="AccessDataSource1" runat="server">
           <ItemStyle VerticalAlign="Top" CssClass="countriesList"/>

           <ItemTemplate>
               <asp:HyperLink ID="Hyperlink1" runat="server" NavigateUrl='<%# "~/Countries.aspx?Country="+ Eval("Country")%>'>
                    <asp:Label ID="Label2" runat="server" Text='<%# Eval("Country") %>' /> (<asp:Label ID="Label1" runat="server" Text='<%# Eval("N") %>' />)
               </asp:HyperLink>
            </ItemTemplate>
     </asp:DataList>

Countries.aspx のコードは次のとおりです。

<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
    DataFile="~/App_Data/TravelJoansDB.accdb" 
    SelectCommand="SELECT * FROM Table2 INNER JOIN [BlogEntryItems] ON Table2.ID=BlogEntryItems.BlogID WHERE Country=@Country" >
    <SelectParameters>
        <asp:QueryStringParameter Name="Country" QueryStringField="Country" />
    </SelectParameters>
</asp:AccessDataSource>
    <asp:DataList ID="DataList1" DataSourceID="AccessDataSource1"
    runat="server" ItemStyle-CssClass="picTableStyle"
    DataKeyField="Country">
    <ItemStyle></ItemStyle>
    <ItemTemplate> 
    <br /><br />
        <table>
            <tr>        
                <td>
                    <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl='<%#"~/Places.aspx?ID="+Eval("ID")%>'>
                    <asp:Label ID="Label2" class="picTitleStyle" runat="server" Text='<%# Eval("BlogTitle") %>' /><br /></asp:HyperLink>
                    <asp:Label ID="Label3" class="picBodyText" runat="server" Text='<%# Eval("TravelDate", "{0:MMMMMMMMM dd, yyyy}") %>' /><br /><br />
                    <asp:Label ID="Label4" class="picBodyText" runat="server" Text='<%# Eval("PicText") %>' />                    
                </td>
            </tr>
            <tr> 
                <td>
                    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#"~/Places.aspx?ID="+Eval("ID")%>'>
                    <asp:Image ID="Image1" runat="server" 
                    BorderWidth="1px" 
                    ImageUrl='<%# "PlaceImages/" + Eval("Image") %>' />
                    </asp:HyperLink>
                </td>
            </tr>
        </table>
    </ItemTemplate>
</asp:DataList>

私の問題は、データベースに同じレコードが表示されることですが、多くのブログ投稿はその国に関するものです。つまり、イタリアに関するブログ投稿が 3 つ、トルコに関する 2 つのブログ投稿があります。イタリアをクリックすると、同じレコードが 3 つ表示されます (何らかの理由でレコード番号 4 が選択され、これが中央のレコードです)。トルコを選択すると、同じレコードが 2 つ表示されます (レコード番号 1)。3 つと 2 つの異なるレコードを表示する方法について何かアイデアはありますか?

みんなありがとう!

4

2 に答える 2

1

Countries.aspx で: 次
を置き換えます。

inner JOIN

と:

left JOIN

注: Table2.ID および BlogEntryItems.BlogID による 1 対 1 のリレーションシップを使用する必要があります。

于 2013-08-28T04:38:38.923 に答える
1

JOIN 句を削除するだけでよいことがわかりました。Countrys.aspx に必要なものはすべて Table2 にありました。サイトの別の部分からクエリをコピーして貼り付けたので、JOIN 句を削除しませんでした。

于 2013-08-28T04:33:47.053 に答える