こんにちは、次のようにいくつかのコントロールとともに内部にパネルがある更新パネルを持っています
<asp:UpdatePanel ID="upPanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server">
<asp:Label ID="Label1" runat="server" AssociatedControlID="txt1">
</asp:Label>
<asp:TextBox ID="txt1" runat="server"></asp:TextBox>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
テキストボックスの場合、その列のデータベース値に基づいて動的に検証されます。次のように、ページの読み込みで必須です
RequiredFieldValidator rqrdColumn = new RequiredFieldValidator();
rqrdColumn.Display = ValidatorDisplay.None;
rqrdColumn.ID = "rqrd1";
rqrdColumn.ControlToValidate = txt1.ID;
rqrdColumn.ErrorMessage = "Can not be blank";
rqrdColumn.ValidationGroup = "vg";
ValidatorCalloutExtender vceColumn = new ValidatorCalloutExtender();
vceColumn.ID = "vce";
vceColumn.TargetControlID = rqrdColumn.ID;
panel.Controls.Add(rqrdColumn);
panel.Controls.Add(vceColumn);
updatepanel.ContentTemplateContainer.Controls.Add(panel);
updatepanel.Update();
foreach (Control c in page.Form.Controls)
{
if (c is UpdatePanel)
{
UpdatePanel up = c as UpdatePanel;
ControlCollection lcoll = c.Controls;
foreach (Control lc in lcoll)
{
if (lc is System.Web.UI.Control)
{
ControlCollection luCol = lc.Controls;
foreach (Control lu in luCol)
{
if (lu is Panel)
{
Panel p = lu as Panel;
ControlCollection lcol = p.Controls;
foreach (Control c2 in lcol.Tol)
{
if (c2 is Label)
{
Label aspxlbl = c2 as Label;
Control associatedColumn = p.FindControl(aspxlbl.AssociatedControlID);
if (associatedColumn != null)
{
if (associatedColumn is TextBox)
{
TextBox txtColumnName = associatedColumn as TextBox;
RequiredFieldValidator rqrdColumn = new RequiredFieldValidator();
rqrdColumn.Display = ValidatorDisplay.None;
rqrdColumn.ID = "rqrd1";
rqrdColumn.ControlToValidate = txtColumnName.ID;
rqrdColumn.ErrorMessage = "Can not be blank";
rqrdColumn.ValidationGroup = "vg";
ValidatorCalloutExtender vceColumn = new ValidatorCalloutExtender();
vceColumn.ID = "vce";
vceColumn.TargetControlID = rqrdColumn.ID;
p.Controls.Add(rqrdColumn);
p.Controls.Add(vceColumn);
up.ContentTemplateContainer.Controls.Add(p);
up.Update();
}
}
}
}
}
}
}
}
}
}
その例外を除いて、すべてが正常に機能します。
コレクションが変更されました。列挙操作が実行されない可能性があります
誰かが私を助けることができますか?