2009-05-03 10 views
0

Je veux implémenter une apperance comme this article mentionné en utilisant le contrôle ListView imbriqué. Cependant, dans mon scénario, je ne peux pas utiliser le contrôle EntityDataSource, donc je lie les données manuellement.Comment ajouter une balise <td> à ListViewItem?

Ma table:

Categories 
    PK: UniqueId, Guid 
    Name, string 
    ParentId, Guid 

<asp:ListView ID="CategoryList" runat="server" 
     onitemdatabound="CategoryList_ItemDataBound"> 
     <LayoutTemplate> 
      <table> 
       <asp:PlaceHolder ID="itemPlaceHolder" runat="server"></asp:PlaceHolder> 
      </table> 
     </LayoutTemplate> 

     <ItemTemplate> 
      <tr> 
       <td colspan="2"><%# Eval("Name") %></td> 
      </tr> 
     </ItemTemplate> 
    </asp:ListView> 



protected void Page_Load(object sender, EventArgs e) 
{ 
    using (PractiseEntities context = new PractiseEntities()) { 
     var result = from categories in context.Categories 
        select categories; 
     CategoryList.DataSource = result; 
     CategoryList.DataBind(); 
    } 
} 

Je veux la sous-catégorie ont un tiret par ajouter une balise <td> à l'élément qui « ParentId » est pas nul. Et ma question est de savoir comment modifier les balises html générées dans l'événement ItemDataBound?

Répondre

1

Vous pourriez avoir quelque chose comme ceci:

<ItemTemplate> 
    <tr> 
     <td colspan="2"><%# GetParentContent(Eval("ParentID")) %></td> 
    </tr> 
</ItemTemplate> 

dans le code-behind:

protected string GetParentContent(object ParentID) 
{ 
    if(ParentID!=null) 
     ... return parent HTML ... 
    else 
     return ""; 
} 
+0

Thx beaucoup, ça marche! –

Questions connexes