在datalist中分别显示分组数据

时间:2013-03-08 06:00:34

标签: c# asp.net

我正在网站上工作,我需要执行搜索并显示结果。例如,如果我搜索名为product1的产品,如果它属于2类别,分别为category1和category2,那么我需要显示它是

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

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

这里product1代表数据库中产品的图像和其他细节。我从数据库中提取符合我搜索条件的数据,并根据类别将其分开。现在我需要显示如上所示.I我试图像this那样做一些事情。我怎么能这样做。我看到itemdatabound事件可以用于此目的,如果是这样,怎么可以使用它。请帮我解决这个问题。

感谢

2 个答案:

答案 0 :(得分:0)

您可以将datalist用于此目的。嵌套的datalist是解决方案。您必须将数据列表放在另一个数据列表中。然后在外部datalist的dataitembound事件上,您必须绑定内部datalist。我将向您展示一些用于理解的样本代码。

 <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();
}

答案 1 :(得分: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();
 }
相关问题