2010-10-28 72 views
0

我在我的c#asp.net项目中使用了telerik控件。我试图在.cs文件的telerik导航菜单中禁用div。例如:无法从.cs文件访问的telerik控件中的控件

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

我尝试运行该项目,我得到这个错误:

CS0103:名称“DivLeave”不会在目前情况下

存在这里是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> 

任何人都可以帮忙吗?如果我把div放在telerik控制器外面,它可以正常工作。这太令人沮丧了!

亲切的问候,

[R

回答

0

首先,你必须使用一个asp.net控制(或至少在服务器运行控制)能够从代码中访问它的后面。例如。

<asp:Label ID="DivLeave" runat="server"></asp:Label> 

其次,要获得Telerik控件内的控件,您需要som特殊代码。在你的榜样,你可以做这样的事情:

// 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; 

要了解更多信息: Accessing Controls Inside Templates

+0

@RupDog,请在答案下发表评论,因为我不能评论你的“新答案”。你的代码不工作,因为DivLeave没有包含text =“Expenses”的项目作为其父项。这就是我使用CSS类在我的检验中找到正确元素的原因。如果您想使用FindItemByText,则必须为此行分配文本: Svendberg 2010-10-31 19:52:47

0

做它的客户端也将工作,你会不会让DIV成为服务器端。 使用jQuery你可以有:

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); 
} 

这是假定这些元素使用最初隐藏的div“显示:无;” CSS规则。