【发布时间】:2013-06-24 11:28:10
【问题描述】:
我正在尝试将RequiredFieldValidator 动态添加到转发器中的 RadioButtonList,但它失败并出现错误:
Unable to find control id 'rblAccessory_40' referenced by the 'ControlToValidate' property of ''.
本节代码为:
if ((e.Item.ItemType != ListItemType.Header) && (e.Item.ItemType != ListItemType.Footer))
{
Label lblAccID = (Label)e.Item.FindControl("lblAccID");
RadioButtonList rblCondition = (RadioButtonList)e.Item.FindControl("rblCondition");
rblCondition.ID = "rblAccessory_" + lblAccID.Text;
if (conditionList.Count() > 0)
{
RequiredFieldValidator rfv = new RequiredFieldValidator();
rfv.ControlToValidate = "rblAccessory_" + lblAccID.Text;
rfv.ErrorMessage = "Please complete the accessories section";
pnlValidation.Controls.Add(rfv);
rblCondition.DataSource = conditionList;
rblCondition.DataValueField = "id";
rblCondition.DataBind();
}
foreach (ListItem li in rblCondition.Items)
{
li.Text = "";
li.Value = "AccessoryID_" + lblAccID.Text + "-ConditionID_" + li.Value;
}
}
}
肯定是找到 RadioButtonList (rblCondition) 因为此时数据绑定正确:
rblCondition.DataSource = conditionList;
rblCondition.DataValueField = "id";
rblCondition.DataBind();
所以我不明白为什么错误说它无法找到控件ID。
我试过手动指定控件ID,如下:
rfv.ControlToValidate = "rblAccessory_" + lblAccID.Text;
并且也尝试过:
rfv.ControlToValidate = rblCondition.ID;
lblAccID 是一个隐藏文本字段,用于存储转发器中行的 ID。
【问题讨论】:
-
更新了我的答案。我最近遇到了一个非常相似的问题,下面是我解决它的方法。我假设您在
ItemCreated事件处理程序中创建控件。
标签: c# validation repeater