我在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
答案 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元素。