我无法恢复对动态创建的用户控件的引用,因此我可以获取其属性或子控件的值。
我有一个名为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中搜索控件。
感谢神秘的人给了我线索,然后在几分钟后删除了他们的评论。