我有一个下载列表,我从服务器端加载。
<asp:DropDownList ID="ddlOne" runat="server" CssClass="dropDrownClass" Width="80%">
在服务器端,加载下拉列表后我正在添加
- 请选择 -
我想确保如果选择了那个,那么我会显示错误消息。为此,我写了
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToValidate="ddlOne" ValueToCompare="-- Please Select --" Operator="Equal" Type="String" ErrorMessage="CompareValidator"></asp:CompareValidator>
<asp:ValidatorCalloutExtender ID="ValidatorCalloutExtender1" TargetControlID="CompareValidator1" runat="server">
</asp:ValidatorCalloutExtender>
但是当我在下拉列表中选择任何内容时,它会向我显示错误消息。 当我将验证器更改为
时<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToValidate="ddlOne" ValueToCompare="0" Operator="Equal" Type="Integer" ErrorMessage="CompareValidator"></asp:CompareValidator>
我在每个选项上都收到错误消息,除了第一个 - 请选择 - 。
请告诉我如何验证下拉列表中的第一项
第2期
我收到双重消息,一个在下拉列表下[显示错误“Carson63000”红色]和一个弹出[验证器呼出]。同样的消息。 我希望只有验证器标注才能显示消息。
答案 0 :(得分:12)
您的验证器将比较下拉列表所选项目的值,而不是文本。最简单的方法通常是为“请选择”项的值设置一个空字符串,为其他项设置非空值,然后只使用RequiredFieldValidator
。
此外,CompareValidator
ValueToCompare="-- Please Select --"
和Operator="Equal"
表示:检查下拉列表的值,并验证它是否等于“ - 请选择 - ”;如果没有,则显示错误。这与您需要的完全相反 - 如果您想采用Operator="NotEqual"
的方法,则需要将运算符更改为CompareValidator
。
答案 1 :(得分:1)
更改运算符值:
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToValidate="ddlOne" ValueToCompare="0" Operator="NotEqual"
Type="Integer" ErrorMessage="CompareValidator" />
答案 2 :(得分:0)
使用DropDownList项目时,需要了解3个基本知识。 (以下“ compare”一词的使用是任何逻辑比较,而不是Validator专用。)
通常需要在DropDownList中进行三项比较。
选定索引-这是一个基于0的索引,您可以在代码中引用它。
选择的值-这是一个整数,不必以0开头或以任何特定顺序排列。您通常会看到此值代表数据库ID。
所选项目-通常是列表中该行的可见文本。
在验证器中使用“ ValueToCompare”非常棘手,因为您正在比较“选定值”,该值与“索引”不一样,但有时具有相同的值。 您将看到的内容取决于您如何为下拉列表创建数据列表。
如果您使用列表类型并将其绑定到DropDown,则可以将DropDown的Value设置为索引的索引值。
如果从数据库查询中获得了列表,则可以将“值”设置为每个项目的数据库ID。
例如,看下面的代码:
protected void DetailsView_New_Form_DataBound (object sender, EventArgs e)
{
DropDownList webform_type = (DropDownList)DetailsView_New_Form.FindControl("DropDownList_DV_New_webform_type");
webform_type.Items.Insert(0, new ListItem("--Select--", "0"));
}
即使我在下拉列表的索引0处插入“ --Select--”,我仍将其值设置为字符串值“ 0”,而不是int值0。它实际上并未插入在索引0处,但是将其插入-1。比较在我的方案中起作用的唯一方法是ValueToCompare =“ -1”。如果下拉菜单中添加的第一项是“选择”,则将为0。正弦,我将其添加到一个已经绑定的下拉列表中,0变为-1。因此,该验证器可以工作:
<asp:RequiredFieldValidator runat="server" ID="webform_type_Validator" CssClass="validator"
ErrorMessage=" *Required!" ControlToValidate="DropDownList_DV_New_webform_type"
InitialValue="0" SetFocusOnError="True" Display="Dynamic"
ValidationGroup="InsertForm" />