2013-03-08 85 views
0

我正在网站上工作,我需要执行搜索并显示结果。例如,如果我搜索的产品名称为product1,并且它属于2类别称为category1和category2,那么我需要产品1表示图像和关于产品的其它细节;这些都是database.I正在从它匹配我的搜索标准数据库中获取数据,并且将其分离根据category.Now我需要将其显示为分别在数据列表中显示分组数据

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

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

这里显示它如上图所示。我试图做一些像this这样的想法我怎么能做到这一点。我看到了某个地方itemdatabound事件可以用于这个目的,如果是的话如何使用它。请帮我解决这个问题。

谢谢

回答

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

我做了同样的事情,但所有的类别名称都绑定到标签上.. – smith269 2013-03-08 07:31:15

+0

是的所有的类别名称应该在那里。大概你会得到与第二个列表(内部) – 2013-03-08 07:46:12

+0

中的类别相关的产品,你没有得到产品列表? – 2013-03-08 07:47:58

0

您可以使用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(); 
} 
+0

我可以用这个任意数量的类别.. – smith269 2013-03-08 06:17:01

+0

是u可以使用此为任意数量的 – 2013-03-08 06:20:33

+0

等待4下一个代码我已经更新了样本的答案类别 – 2013-03-08 06:21:32