ASP.NET 4.0。我想讓用戶查看/編輯客戶許可證上的項目。有許可證1-M的產品,產品的名單將擴大隨着時間的推移,所以我動態創建的所有產品(在Page_Load中)與複選框列表說的許可是否有產品,像這樣:動態創建的控件丟失值
CheckBox cbxProduct = new CheckBox();
cbxProduct.ID = "cbxProduct" + product.ID.ToString();
我能找到這些動態控制和使用訪問回發他們的價值觀:
CheckBox cbxProd = (CheckBox)pnlLicenseDetails.FindControl("cbxProduct" + productID.ToString());
但只有當他們剛剛在Page_Load中重新創建(或Page_Init,似乎並不重要)。問題是我希望用戶能夠取消選中一個框以從許可證中刪除產品,然後保存結果。但爲了找到複選框並確定其值,我必須重新創建控件,這當然會刪除用戶輸入的任何值。
如果我嘗試引用的複選框,而無需重新創建它們,我當然得到一個「對象未設置...」錯誤。所以我需要一些方法來捕捉用戶在輸入之前輸入的值。
對此提出建議?
謝謝,@ matt-dot-net。你能解釋FindControl的替代方案嗎?我不確定私人成員變量是什麼意思。 – SteveEx
順便說一下,我設置了它,以便在Page_Init中調用BuildControls函數,而不管PostBack。嘗試保存用戶更改時,「對象引用」錯誤仍然存在。如果我從SaveChanges事件中調用BuildControls,我會通過它,但是得到一個錯誤,說多個控件具有相同的ID,顯然,因爲BuildControls也在Page_Init中。 – SteveEx
字典的想法是我尋找的銀彈。謝謝,@ matt-dot-net! – SteveEx