プロパティまたは子コントロールの値を取得できるように動的に作成されたユーザーコントロールへの参照を回復するのに問題があります。
App_CodeにあるBookingObject.ascxというカスタムコントロールがあります。
プログラムで問題なくコントロールを作成できますが、後でコントロールへの参照を取得しようとすると、その子コントロール値にアクセスするために、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")
MainItemが何もないため、FindControl( "product_id")を実行しようとすると、null参照例外が発生します。
私はこの問題に何時間も苦労してきましたが、それは簡単だと思いました。私は何か小さなものが欠けていると確信しています。
誰かが私が間違っていることを教えてもらえますか?
すべての助けに感謝します。
更新 気にしないでください、私は愚かで、NewItemPHを検索するべきだったときにコントロールのMe.Pageを検索していました。
手がかりをくれて数分後にコメントを削除してくれた謎の人物に感謝します。