分别在数据列表中显示分组数据
我正在网站上工作,我需要执行搜索并显示结果。例如,如果我搜索的产品名称为product1
,并且它属于2类别称为category1和category2,那么我需要产品1表示图像和关于产品的其它细节;这些都是database.I正在从它匹配我的搜索标准数据库中获取数据,并且将其分离根据category.Now我需要将其显示为分别在数据列表中显示分组数据
Category 1:
-----------
product1
Category 2:
----------
product1
这里显示它如上图所示。我试图做一些像this这样的想法我怎么能做到这一点。我看到了某个地方itemdatabound事件可以用于这个目的,如果是的话如何使用它。请帮我解决这个问题。
谢谢
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();
}
您可以使用datalist达到此目的。嵌套数据列表就是解决方案。你必须把一个datalist放在另一个datalist里面。然后在外部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();
}
我可以用这个任意数量的类别.. – smith269 2013-03-08 06:17:01
是u可以使用此为任意数量的 – 2013-03-08 06:20:33
等待4下一个代码我已经更新了样本的答案类别 – 2013-03-08 06:21:32
我做了同样的事情,但所有的类别名称都绑定到标签上.. – smith269 2013-03-08 07:31:15
是的所有的类别名称应该在那里。大概你会得到与第二个列表(内部) – 2013-03-08 07:46:12
中的类别相关的产品,你没有得到产品列表? – 2013-03-08 07:47:58