2010-10-28 74 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規則。