无法从.cs文件访问telerik控件中的控件

时间:2010-10-28 15:40:05

标签: c# asp.net telerik

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

        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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);
}

这假设最初使用“display:none;” CSS规则隐藏这些div元素。