【发布时间】:2012-09-02 00:46:05
【问题描述】:
在 datalist 中使用必填字段验证器时遇到问题,
我们有 4 个民意调查。在那个用户必须回答两个必需的民意调查。
我已经在我的数据列表中添加了所有四个民意调查,它显示正常,并且在单击提交按钮时,必填字段验证器正在工作并给出错误消息。一旦我们回答了所需的民意调查并再次单击提交按钮,所有其他不需要的民意调查显示为所需的一项。
我的投票答案提交没问题,我想避免显示非必需投票的错误消息。
你能帮我解决这个问题吗
这是我的设计和代码:
<div id="pollQuestion_div" Class="read-messages-poll" runat="server" >
<asp:DataList ID="PollDataList" runat="server" onitemdatabound="PollDataList_ItemDataBound">
<ItemTemplate>
<asp:HiddenField ID="PollIDReqHiddenField" Value='<%# Eval("PollID") %>' runat="server" Visible="false" />
<asp:Label ID="lblReqQuestionNumber" runat="server" Text='<%# Eval("No of PollQuestion") %>' Font-Bold="true"></asp:Label><br />
<asp:Label ID="lblRequiredPollQusetion" runat="server" Text='<%# Eval("PollQuestions") %>' Font-Bold="true"></asp:Label>
<asp:RequiredFieldValidator ID="RequiredFieldValidatorReqPoll" runat="server" ControlToValidate="rdblstRequiredPollOptions" Display="Dynamic" ErrorMessage="*" ForeColor="Red" ></asp:RequiredFieldValidator>
<asp:HiddenField ID="HiddenFieldPollOption" runat="server" Value='<%# Eval("PollOptions") %>' Visible="false" />
<asp:HiddenField ID="HiddenFieldPollType" runat="server" Value='<%# Eval("PollType") %>' Visible="false"/>
<asp:RadioButtonList ID="rdblstRequiredPollOptions" runat="server" > </asp:RadioButtonList>
<asp:RadioButtonList ID="rdblstNonRequiredPollOptions" runat="server" > </asp:RadioButtonList>
<asp:CheckBoxList ID="CheckBoxListMultiple" runat="server" RepeatDirection="Vertical"></asp:CheckBoxList>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="btnSubmitPoll" runat="server" Text="Submit" CssClass="custom-button" OnClick="btnSubmitPoll_click" />
</FooterTemplate>
</asp:DataList>
</div>
数据列表项绑定代码:
protected void PollDataList_ItemDataBound(object sender, DataListItemEventArgs e)
{
//调试器.Break();
尝试
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
System.Data.DataRowView drv = (System.Data.DataRowView) e.Item.DataItem);
字符串 strPollID = drv.Row["PollID"].ToString();
字符串 pollOptions = drv.Row["PollOptions"].ToString();
字符串 strPollType = drv.Row["PollType"].ToString();
字符串 strPollRequiredorNot = drv.Row["RequiredPoll"].ToString();
if (strPollType == "RadioButtonList")
{
if (strPollRequiredorNot == "必需")
{
RadioButtonList rbl = (RadioButtonList)e.Item.FindControl("rdblstRequiredPollOptions");
foreach(pollOptions.Split('}') 中的字符串选择)
{
rbl.Items.Add(opt.ToString());
}
//RequiredFieldValidator rfv = new RequiredFieldValidator();
//rfv.ID = "reqfield";
//rfv.ControlToValidate = rbl.ID;
//rfv.ErrorMessage = "*";
RequiredFieldValidator rfvRadioButtonList = (RequiredFieldValidator)e.Item.FindControl("RequiredFieldValidatorReqPoll");
rfvRadioButtonList.ControlToValidate = rbl.ID;
}
别的
{
RadioButtonList rbl = (RadioButtonList)e.Item.FindControl("rdblstNonRequiredPollOptions");
foreach(pollOptions.Split('}') 中的字符串选择)
{
rbl.Items.Add(opt.ToString());
}
}
}
否则 if (strPollType == "CheckBoxList")
{
CheckBoxList chkList = (CheckBoxList)e.Item.FindControl("CheckBoxListMultiple");
foreach(pollOptions.Split('}') 中的字符串选择)
{
chkList.Items.Add(opt.ToString());
chkList.RepeatDirection = 重复方向。垂直;
}
if (strPollRequiredorNot == "必需")
{
//CustomValidators.RequiredFieldValidatorForCheckBoxLists rfvCheckBoxList = (CustomValidators.RequiredFieldValidatorForCheckBoxLists)e.Item.FindControl("RequiredFieldValidatorForCheckBoxLists1");
//rfvCheckBoxList.ControlToValidate = chkList.ID;
}
}
}
}
捕捉(例外前)
{
}
}
【问题讨论】: