2015-09-17 20 views
0

我有一個包含帶有HiddenField控件的中繼器的表單,其中的ID是動態創建的。ASP.NET使用動態生成的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

我找到了解決這個問題的方法,所以想到我會在這裏發佈。

代替動態創建我設置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 

所以我然後可以通過訪問這些值