我无法恢复对动态创建的用户控件的引用,因此我可以获取其属性或子控件的值。
我有一个名为 BookingObject.ascx 的自定义控件,它位于 App_Code 中。
我可以毫无问题地以编程方式创建控件,但是稍后,当我尝试获取对控件的引用以访问其子控件值时,我只是不断地获取 null。
继承人一些代码:
Dim MainItem As BookingItem = TryCast(LoadControl(GetType(BookingItem), Nothing), BookingItem)
MainItem.ID = "Item_" & NumberOfControls.ToString() 'Item_0
Dim lblid As Label = MainItem.FindControl("lblID")
lblid.Text = (NumberOfControls + 1).ToString()
NewItemPH.Controls.Add(MainItem)
Me.NumberOfControls += 1
这工作正常,我可以成功设置标签值。
然而:
Dim MainItem As BookingItem = TryCast(Me.Page.FindControl("Item_0"), BookingItem)
Dim product_id As DropDownList = MainItem.FindControl("product_id")
尝试 FindControl("product_id") 时出现空引用异常,因为 MainItem 什么都没有。
我已经为这个问题苦苦挣扎了好几个小时,我认为这很简单。我确定我只是缺少一些小东西。
谁能告诉我我做错了什么?
感谢所有帮助。
更新 没关系,当我应该搜索 NewItemPH 时,我正在愚蠢地搜索 Me.Page 以获取控件。
感谢神秘人给了我线索,然后在几分钟后删除了他们的评论。