2013-09-03 3 views
2

NET. Je suis en train d'accéder à la balise div dans le code derrière lequel se trouve à l'intérieur du SeparatorTemplate Voici mon code ASPXComment accéder au contrôle aspx dans le code derrière?

<div> 
    <asp:DataList ID="DataList1" runat="server"> 
     <ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle> 
     <HeaderTemplate> 
      <table width="900px"> 
       <tr> 
        <td width="300px"> 
         <b>Name</b> 
        </td> 
        <td width="300px"> 
         <b>Account No</b> 
        </td> 
        <td width="300px"> 
         <b>Company</b> 
        </td> 
       </tr> 
      </table> 
     </HeaderTemplate> 
     <ItemTemplate> 
      <table width="900px"> 
       <tr> 
        <td align="left" width="300px"> 
         <%# DataBinder.Eval(Container.DataItem, "Name")%> 
        </td> 
        <td align="left" width="300px"> 
         <%# DataBinder.Eval(Container.DataItem, "AccountNo")%> 
        </td> 
        <td align="left" width="300px"> 
         <%# DataBinder.Eval(Container.DataItem, "Company")%> 
        </td> 
       </tr> 
      </table> 
     </ItemTemplate> 
     <HeaderStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#4A3C8C"></HeaderStyle> 
     <SeparatorTemplate> 
      <div id="divSeprator" runat="server">//This div tag i want to access in the code behind 
      <br /> 
      </div> 

     </SeparatorTemplate> 
    </asp:DataList> 
</div> 

J'ai essayé d'accéder au this.Controls et DataList1.Controls mais aussi de ceux qui ne contient pas ce div je sais est dans le SepratorTemplate mais je ne sais pas comment accéder au contrôle à partir de ce modèle car il n'y a rien pour trouver les contrôles.

+0

ce que vous essayez d'accomplir? –

+0

En fait j'essaye d'appliquer le modèle de séparateur après 2 rangées pas après chaque rangée ainsi je veux vérifier la condition dans le code derrière et appliquer l'étiquette de div selon lui –

Répondre

3
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) 
{ 
    // Find the div control as htmlgenericcontrol type, if found apply style 
    System.Web.UI.HtmlControls.HtmlGenericControl div = (System.Web.UI.HtmlControls.HtmlGenericControl)e.Item.FindControl("DivContent"); 

    if(div != null) 
     div.Style.Add("border-color", "Red"); 

} 
+2

Serait mieux d'ajouter vérifier pour 'e.Item.ItemType == ListItemType.Separator' pour éviter NullReferenceException ou utiliser la syntaxe' as' pour le type de coulée –

+0

Merci a travaillé comme charme. –

-1

vous devez faire balise runat = « sectionner » et donner id

<div id="div" runat="server"> 

Ensuite, vous pouvez y accéder en utilisant

HtmlGenericControl div = HtmlGenericControl("div") 
+0

Ceci ne compliera pas, comme 'HtmlGenericControl (" div ") 'n'est pas une fonction. Vous devrez trouver le contrôle à partir de l'élément datalist ou parent datalist. –

0

Vous aurez besoin de trouver de la ligne datalist comme ci-dessous.

HtmlGenericControl div = (HtmlGenericControl)yourDataList.Items[0].FindControl("dvSeparator"); 

Vous pouvez passer l'index de l'élément de liste de données (ligne) dans .Items[] pour lequel vous voulez trouver le div pour le traitement.

Si vous souhaitez traiter div de tous les éléments datalist, vous pouvez le faire dans l'événement de liaison de données de l'élément datalist comme @Upvote MarkAnswer a suggéré dans sa réponse.

0
HtmlGenericControl divSeprator = (HtmlGenericControl)DataList1.Items[0].FindControl("divSeprator"); 

Où est votre index de l'élément.

Ou lier un événement DataList1_ItemDataBoud et utilisation:

if(e.Item.ItemType == ListItemType.Separator) 
    HtmlGenericControl divSeprator = (HtmlGenericControl)e.Item.FindControl("divSeprator"); 
+0

Cela a fonctionné comme un charme grâce. –

Questions connexes