2013-03-08 3 views
0

검색을 수행하고 결과를 표시해야하는 웹 사이트에서 작업하고 있습니다. 예를 들어 product1이라는 제품을 검색하고 카테고리 2와 카테고리 2가 있다고 말하는 경우에는 제품 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

+0

예 모든 카테고리 이름이 있어야합니다. 이와 함께 두 번째 목록 (내부)에있는 카테고리와 관련된 제품을 얻을 수 있습니다 –

+0

제품 목록을 가져 오지 못하고 있습니까? –

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

는 내가 .. – smith269

+0

예 유 (4) 다음 코드는 내가 대답에 샘플을 업데이트 한 대기 –

+0

카테고리의 번호를 이것을 사용할 수 있습니다 범주의 수에 대해이 작업을 사용할 수 있습니다 –

관련 문제