我正在网站上工作,我需要执行搜索并显示结果。例如,如果我搜索名为product1
的产品,如果它属于2类别,分别为category1和category2,那么我需要显示它是
Category 1:
-----------
product1
Category 2:
----------
product1
这里product1代表数据库中产品的图像和其他细节。我从数据库中提取符合我搜索条件的数据,并根据类别将其分开。现在我需要显示如上所示.I我试图像this那样做一些事情。我怎么能这样做。我看到itemdatabound事件可以用于此目的,如果是这样,怎么可以使用它。请帮我解决这个问题。
感谢
答案 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();
}