0

検索を実行して結果を表示する必要があるWebサイトで作業しています。たとえば、という名前の製品を検索し、product1それがカテゴリ1とカテゴリ2の2つのカテゴリに分類される場合、次のように表示する必要があります。

Category 1:
-----------
product1

Category 2:
----------
product1

ここで、product1は、データベースにある製品の画像やその他の詳細を表しています。データベースから検索条件に一致するデータを取得し、カテゴリ別に分類しています。次に、上記のように表示する必要があります。どうすればよいですか。itemdataboundイベントをこの目的に使用できることがどこかで見られました。その場合、どのように使用できますか。この問題の解決にご協力ください。

ありがとう

4

2 に答える 2

0

この目的でデータリストを使用できます。ネストされたデータリストがソリューションです。データリストを別のデータリスト内に配置する必要があります。次に、外部データリストのdataitemboundイベントで、内部データリストをバインドする必要があります。わかりやすくするためのサンプルコードをいくつか紹介します。

コード

 <asp:DataList ID="DataList1" runat="server">
    <ItemTemplate>
    <asp:Label ID="lblCategory" runat="server"  Text='<% eval("categoryid") %>'></asp:Label>
        <asp:DataList ID="DataList2" runat="server">
        <ItemTemplate>
        <asp:Image runat="server" ID="catImage" ImageUrl='<% eval("ImageURL") %>' />
        </ItemTemplate>
        </asp:DataList>
    </ItemTemplate>
    </asp:DataList>




 protected void Page_Load(object sender, EventArgs e)
{
    DataTable tbl = new DataTable();



DataTable tbl = new DataTable();
        DataRow datarow;

        tbl.Columns.Add ("categoryid");

        datarow=tbl.NewRow ();
//this value from database
        datarow ["categoryid"]="Cat1";

        tbl.Rows.Add (datarow );
         //tbl= Take datafromdatabasetoBindtheFirstDataList();

        DataList1.DataSource = tbl;
        DataList1.DataBind();



}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
    Label catId = e.Item.FindControl("lblCategory") as Label ;
    DataList List2= e.Item.FindControl("DataList2") as DataList ;

    DataTable tbl2 = new DataTable();
    //tbl2= GetCategoryItemBasedonCategoryID(catId.Text)          database call function for fetch data to bind the second datalist
    List2.DataSource = tbl2;
    List2.DataBind();
}
于 2013-03-08T06:15:30.443 に答える
0
 DataTable dlcat = new DataTable();

        SqlCommand cmdcat = new SqlCommand("select CategoryName from tblCategoryMaster where CategoryMasterSequenceNumber='" + catno + "'", lcon);
        lcon.Open(); 
        cmdcat.ExecuteNonQuery();
        SqlDataAdapter da = new SqlDataAdapter(cmdcat);
        da.Fill(dlcat);
        dlouter.DataSource = dlcat;
        dlouter.DataBind();



<asp:DataList ID="DataList1" runat="server" 
    onitemdatabound="DataList1_ItemDataBound">
<ItemTemplate>
<asp:Label ID="lblCategory" runat="server"  Text='<% eval("CategoryName") %>'></asp:Label>
    <asp:DataList ID="DataList2" runat="server" Width="197px">
    <ItemTemplate>
    <asp:Image runat="server" ID="catImage" ImageUrl='<% eval("ImageURL") %>' />
    </ItemTemplate>
        </asp:DataList>
    </ItemTemplate>
    </asp:DataList>


protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        Label catId = e.Item.FindControl("lblCategory") as Label ;
        DataList List2= e.Item.FindControl("DataList2") as DataList ;

        DataTable tbl2 = new DataTable();
        //tbl2

= GetCategoryItemBasedonCategoryID(catId.Text)          database call function for fetch data to bind the second datalist
        List2.DataSource = tbl2;
        List2.DataBind();
 }
于 2013-03-08T07:29:17.083 に答える