0

「カテゴリ」ごとに div を含む大きなメニューを作成しようとしています。各 div では、H3 は SQL テーブルから取得した「カテゴリ」に基づいています。の下には、各カテゴリのサブカテゴリであるリスト項目があります...これはリンクです。テーブルには、一連のカテゴリ項目があります。

ループして、カテゴリとそのカテゴリに関連付けられたサブカテゴリを表示するにはどうすればよいですか?

私のhtmlの設定方法は次のとおりです。

<asp:Repeater id="dlCategories" runat="server" DataSourceID="LarryColeSub">
         <ItemTemplate>    
        <div class="col_1">
       <h3><%# Eval("Category") %></h3> 
            <ul>            
    <ItemTemplate>
    <li><a id="cmdSubCategory" class="sectioncontentslink" href='default.aspx?rPage=ToolList&subCatID=<%# Eval("SubCategoryID")%>'>
                                <%# Eval("SubCategory") %></a></li>
    </ItemTemplate>
            </ul>
        </div> 
         </ItemTemplate>
    </asp:Repeater>

ここに私のsqlDataSourceがあります:

<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:LarryCole %>" ID="LarryColeSub" runat="server" SelectCommand="SELECT [SubCategoryID],[SubCategory],[Category],[fkCategoryId] FROM [tblSubCategory]">

これを実行すると、(明らかに) 各サブカテゴリの div と各カテゴリの div が作成されます。

4

1 に答える 1

0
    <%@ Control Language="c#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Configuration" %>
<script runat="server">  
    protected void Page_Load(object sender, System.EventArgs e) {  
        if (!Page.IsPostBack) {  
            SqlConnection MyConnection;  
            SqlCommand MyCommand;  
            SqlDataAdapter MyAdapter;  
            DataTable MyTable;  
            DataSet ds;
            ds = new DataSet();

            MyConnection = new SqlConnection();  
            MyConnection.ConnectionString = ConfigurationManager.ConnectionStrings["db_name_here"].ConnectionString;  

            MyCommand = new SqlCommand(); 
            MyCommand.CommandType = CommandType.Text;  
            MyCommand.Connection = MyConnection;


            MyCommand.CommandText = "SELECT * FROM tblSubCategory";  
            MyTable = new DataTable();   
            MyAdapter = new SqlDataAdapter();  
            MyAdapter.SelectCommand = MyCommand;  
            MyAdapter.Fill(ds,"SubCategory");  
            MyCommand.Dispose();

            MyCommand.CommandText = "SELECT * FROM tblCategory";  
            MyTable = new DataTable();  
            MyAdapter = new SqlDataAdapter();  
            MyAdapter.SelectCommand = MyCommand;  
            MyAdapter.Fill(ds,"Category");  
            MyCommand.Dispose();


            ds.Relations.Add("myrelation",ds.Tables["Category"].Columns["CategoryID"], ds.Tables["SubCategory"].Columns["fkCategoryID"]);
            //populate parent repeater
            rpCategories.DataSource = ds.Tables["Category"];  
            rpCategories.DataBind();  

            MyAdapter.Dispose();  
            MyConnection.Dispose();  

        }  
    }  
</script>  

//html repeater code
    <asp:Repeater id="rpCategories" runat="server">
             <ItemTemplate>    
            <div class="col_1">
                <h3><%# DataBinder.Eval(Container.DataItem,"Category") %></h3>
                <ul>    
                    <asp:Repeater id="rpSubCategories" runat="server" datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation") %>'>
                     <ItemTemplate>
                         <li><a id="cmdSubCategory" class="sectioncontentslink" href='default.aspx?varName=BlahBlah&subCatID=<%# ((DataRow)Container.DataItem)["SubCategoryID"] %>'>
                              <%# ((DataRow)Container.DataItem)["SubCategory"] %></a>
                         </li>
                     </ItemTemplate>
                    </asp:Repeater>
                </ul>
            </div> 
             </ItemTemplate>
        </asp:Repeater
于 2013-06-10T17:18:02.550 に答える