2010-10-28 6 views
0

J'utilise des commandes telerik dans mon projet C# asp.net. J'essaie de désactiver un div dans un menu de navigation telerik à partir du fichier .cs. Par exemple:Commandes d'un contrôle telerik non accessible depuis le fichier .cs

 if (Emp_Role == "1" || Emp_Role == "5") 
     { 
      DivLeave.Visible = true; 
     } 

J'essaie de mener le projet que je reçois cette erreur:

CS0103: Le nom « DivLeave » n'existe pas dans le contexte actuel

Voici un exemple du code ASPX

<telerik:RadMenu runat="server" ID="RadMenu1" Skin="Sitefinity" OnClientItemOpened="itemOpened" 
      Width="670px" Height="26px" EnableShadows="true"> 
      <Items> 
       <telerik:RadMenuItem Text="Expenses" PostBack="false"> 
        <Items> 
         <telerik:RadMenuItem CssClass="Stores" Width="640px"> 
          <ItemTemplate> 
           <div id="DivLeave" class="Wrapper"> 
            <h3> 
             Expense Management</h3> 
            </div> 

Quelqu'un peut-il vous aider? Si je place la div en dehors du contrôle telerik, cela fonctionne bien. C'est tellement frustrant!

Cordialement,

R

Répondre

0

Tout d'abord, vous devez utiliser un contrôle asp.net (ou au moins un contrôle qui fonctionne dans le serveur) pour pouvoir y accéder à partir du code derrière. Par exemple. Deuxièmement, pour obtenir un contrôle à l'intérieur d'un contrôle Telerik, vous avez besoin d'un code spécial. Dans votre exemple, vous pouvez faire quelque chose comme ceci:

// Find menuitem by css class 
RadMenuItem expenses = RadMenu1.FindItem(i => i.CssClass == "Stores"); 
// Find control inside menuitem 
Label label = expenses.FindControl("DivLeave") as Label; 
label.Visible = true; 

Pour en savoir plus: Accessing Controls Inside Templates

+0

@RupDog, merci de placer des commentaires sous la réponse car je ne suis pas en mesure de commenter votre "nouvelle réponse". Votre code ne fonctionne pas car DivLeave n'a pas d'élément avec text = "Expenses" comme parent. C'est la raison pour laquelle j'utilise la classe css pour trouver l'élément correct dans mon exampel. Si vous voulez utiliser FindItemByText, vous devez assigner un texte à cette ligne: Svendberg

0

Le faire côté client travaillera également et vous ne devrez pas faire de la div deviennent côté serveur. En utilisant jQuery vous pouvez:

if (Emp_Role == "1" || Emp_Role == "5") 
{ 
    Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "show_divleave", "$(function() { $(\"div[id$='DivLeave']\").each(function(index) { $(this).css(\"display\", \"\"); }); });", true); 
} 

Cela suppose ces éléments div sont d'abord cachés en utilisant "display: none;" Règle CSS.

Questions connexes