Если кто-то наткнется на эту страницу, то этот сайт поможет мне выбрать верный путь:
http://www.learning2code.net/Learn/2009/8/12/Adding-Controls-to-an-ASPNET-form-Dynamically.aspx
В моем случае элемент управления, который я помещал в свой заполнитель, также был динамическим (управляемым данными) на основе типа перечисления, определяющего, есть ли CheckBox, ListBox, Textbox, RadDatePicker и т. будет вставлен в заполнитель.
Поскольку у меня был повторитель с несколькими заполнителями вместо одного заполнителя, содержащего все мои динамические элементы управления, такие как предоставленная ссылка, я реализовал свое решение следующим образом.
On the method that adds your dynamic controls to the placeholder (ItemDataBound):
1. Give the dynamic control a unique ID (string)
2. Add the unique ID & enum type to the Dictionary<enum, string> that will be stored in the ViewState
Override the LoadViewState method as follows (this will load your Dictionary<enum, string> array):
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
}
Override the OnLoad method to add the dynamic controls that were cleared on postback:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (IsPostBack)
AddDynamicControlsToPlaceholder();
}
private void AddDynamicControlsToPlaceholder()
{
foreach (RepeaterItem item in reapeater.Items)
{
if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
{
var keyValue = DynamicDictValues.ElementAt(item.ItemIndex);
var plhDynControl = item.FindControl("plhDynControl") as PlaceHolder;
//CreateDynamicControl method uses the key to build a specific typeof control
//and the value is assigned to the controls ID property.
var dynamicControl = CreateDynamicControl(keyValue);
plhItemValue.Controls.Add(dynamicControl);
}
}
}
Вам все еще нужно реализовать код, который проходит через повторитель и извлекает обновленные значения на стороне клиента из динамических элементов управления. Надеюсь, что это поможет, действительно потребовалось много работы, чтобы решить эту проблему.