【问题标题】:Controls in a telerik control not accessible from .cs file无法从 .cs 文件访问 Telerik 控件中的控件
【发布时间】:2010-10-30 14:59:58
【问题描述】:

我正在尝试使用此解决方案来访问 Telerik 菜单项中的项目:

ascx 代码:

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

在 ascx.cs 文件中,我运行此代码以禁用 asp 标签

    RadMenuItem expenses = RadMenu1.FindItemByText("Expenses");
    Label DivLeave = (Label)expenses.FindControl("DivLeave");
    DivLeave.Visible = false;

但是当我尝试运行代码时出现此错误:

    {"Object reference not set to an instance of an object."}

谁能告诉我如何解决这个问题。我真的需要运行这个服务器端,因为围绕上述代码的代码在服务器端做了一些工作,并且它们都可以很好地适应......

亲切的问候

【问题讨论】:

  • 您在哪一行得到错误? 2号还是3号?

标签: c# asp.net telerik


【解决方案1】:

这是因为在呈现表单的 HTML 时,标签的名称不是“DivLeave”。由于它位于用户控件内部,因此它将是页面上的用户控件名称和“DivLeave”的组合。通过查看后面的代码,您应该能够看到名称。另外,为什么不使用 FindControl 就不能只引用 DivLeave.Visible?它是一个带有 runat server 属性的 ASP.NET 控件,因此您应该可以使用它。

【讨论】:

  • 像 DivLeave.Visible 那样引用它的问题在于它位于 Telerik 控件中。出于某种原因,当它在控件内时,它不允许我这样做......
  • 因此,如果这是您要隐藏的 RadMenu 项目,您可以执行费用之类的操作。FindItemByText("Leave").Visible=false ?
【解决方案2】:

您能否在 Visual Studio 中快速查看“费用”对象并查看“DivLeave”是否可用?可能会发生这样的情况:

  1. 标签控件可用,但在对象中的不同级别。
  2. 标签控件本身未添加到父“费用”中。

此外,最好在访问费用和 DivLeave 对象之前对其进行空检查。

【讨论】:

    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    相关资源
    最近更新 更多