我有一个表单,其中包含一个带有HiddenField控件的转发器,其中ID是动态创建的。
Dim tNewOrder As HiddenField = CType(e.Item.FindControl("tNewOrder"), HiddenField)
tNewOrder.ID = "tNewOrder" & CategoryId
当我提交表单时,我循环遍历转发器并尝试访问每个HiddenField值但我得到错误'对象引用未设置为对象的实例。'
For Each CatItem As RepeaterItem In reCategory.Items
Dim hCategoryId As HiddenField = CType(CatItem.FindControl("hCategoryId"), HiddenField)
Dim tNewOrder As HiddenField = CType(CatItem.FindControl("tNewOrder" & hCategoryId.Value), HiddenField)
Response.Write(tNewOrder.Value)
Next
有没有办法找到动态生成ID的控件?
答案 0 :(得分:0)
我找到了绕过这个问题的方法,所以我想在这里发布它。
我没有动态创建控件ID,而是将ID设置为'tNewOrder'和ClientIDMode:
更改此行:
tNewOrder.ID = "tNewOrder" & CategoryId
为:
tNewOrder.ClientIDMode = UI.ClientIDMode.Predictable
然后我知道ID将生成为每个转发器索引的tNewOrder_0,tNewOrder_1,tNewOrder_2。
然后我可以通过以下方式访问这些值:
For Each CatItem As RepeaterItem In reCategory.Items
Dim tNewOrder As HiddenField = CType(CatItem.FindControl("tNewOrder"), HiddenField)
Response.Write(tNewOrder.Value)
Next