ASP.NET 4.0。我想允许用户查看/编辑客户许可证上的项目。一个许可证有 1-M 个产品,并且产品列表会随着时间的推移而扩展,所以我动态地创建一个所有产品的列表(在 Page_Load 中),并带有一个复选框来说明许可证是否具有该产品,如下所示:
CheckBox cbxProduct = new CheckBox();
cbxProduct.ID = "cbxProduct" + product.ID.ToString();
我可以使用以下方法在 PostBack 上找到这些动态控件并访问它们的值:
CheckBox cbxProd = (CheckBox)pnlLicenseDetails.FindControl("cbxProduct" + productID.ToString());
但前提是它们刚刚在 Page_Load(或 Page_Init,似乎无关紧要)中重新创建。问题是我希望用户能够取消选中一个框以从许可证中删除产品,然后保存结果。但是为了找到复选框并确定其值,我必须重新创建控件,这当然会删除用户输入的任何值。
如果我尝试引用复选框而不重新创建它们,我当然会收到“未设置对象引用...”错误。所以我需要一些方法来在用户输入的值被清除之前捕获它们。
建议?