[英]Accessing a control dynamically added to a placeholder during an event
我正在基于下拉列表中选择的值动态创建ASP.NET控件; 例如,该字段可以是文本框或复选框(目前),然后将其添加到占位符控件。 但是,我不确定如何检索该值-尽管我在创建控件时指定了ID,但使用占位符的FindControl
方法将返回null。
这是我的代码:
protected void ddlFields_SelectedIndexChanged(object sender, EventArgs e) {
// this simply gives me back an object with some properties
// such as the type of field (e.g. text, boolean, number)
var column = GetFieldDetailsByValue(ddlFields.SelectedValue);
this.CreateInputControl(column.Type);
}
private void CreateInputControl(string dataType) {
Control controlToAdd = null;
switch (dataType) {
case TYPE_STRING:
case TYPE_NUMBER:
controlToAdd = new TextBox();
break;
case TYPE_BOOL:
controlToAdd = new CheckBox();
break;
}
if (controlToAdd != null) {
controlToAdd.ID = "ctlFieldValue";
this.fieldsPlaceholder.Controls.Add(controlToAdd);
}
}
我有一个Button事件,它检查ctlFieldValue
控件以检索它的值,但是它始终为null。 我应该如何处理呢?
在回发期间检索值的唯一方法是,如果以完全相同的方式创建控件集合。 因此,如果要在事件期间添加控件,则在回发时,需要在同一父控件中创建完全相同的控件(具有相同的ID)。
不幸的是-在回发事件期间添加控件时,这很难做到。 我过去所做的就是使用ViewState跟踪回发期间应创建哪些控件。 虽然可能有更好的方法,但是执行ViewState路由似乎可行。
您总是可以直接从Request.Form集合中读取过帐的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.