このページに出くわした人は、これが私を正しい軌道に乗せた Web サイトです
。 .aspx
私の場合、プレースホルダー内に配置していたコントロールも、CheckBox、ListBox、Textbox、RadDatePicker などを決定する列挙型に基づいて動的 (データ駆動型) でした。プレースホルダーに挿入されます。
提供されたリンクのようなすべての動的コントロールを含む 1 つのプレースホルダーではなく、複数のプレースホルダーを持つリピーターがあったため、次のようにソリューションを実装しました。
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);
}
}
}
リピーターをループして、更新されたクライアント側の値を動的コントロールから取得するコードを実装する必要があります。これが役立つことを願っています。これを解決するには本当に多くの作業が必要でした。