0

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

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

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

这里 product1 代表数据库中产品的图像和其他详细信息。我正在从数据库中获取与我的搜索条件匹配的数据并根据类别将其分开。现在我需要如上所示显示它。我正在尝试do somethink like this我该怎么做。我在某处看到 itemdatabound 事件可用于此目的,如果可以,如何使用它。请帮我解决这个问题。

谢谢

4

2 回答 2

0

为此,您可以使用 datalist。嵌套数据列表是解决方案。您必须将一个数据列表放在另一个数据列表中。然后在外部数据列表的 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 回答