DropDownList RequiredFieldValidator不起作用

2 asp.net validation

我的asp.net网页上有一个DropDownList.RequiredFieldValidator不起作用.谢谢你查看我的代码.

<asp:DropDownList ID="Organization" runat="server"
    DataSourceID="OrganizationList"
    DataTextField="OrgName" DataValueField="OrgCode" CausesValidation="True">
</asp:DropDownList>

<asp:SqlDataSource ID="OrganizationList" runat="server"
    ConnectionString="<%$ ConnectionStrings:MembershipDB %>"
    SelectCommand="Admin_GetOrganizationDropDown" 
    SelectCommandType="StoredProcedure"></asp:SqlDataSource>

<asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidatorOrg"
    ControlToValidate="Organization"
    ErrorMessage="Organization is required." 
    Display="Dynamic" />
Run Code Online (Sandbox Code Playgroud)

Ari*_*ion 6

如果你还没有完成它,你应该有一个值,这意味着你没有选择任何东西.像这样:

 Organization.Insert(0,new ListItem("--Select--","0"));
Run Code Online (Sandbox Code Playgroud)

然后你需要告诉它asp:RequiredFieldValidator检查你不允许的值.所以InitialValue值应为0.像这样:

<asp:RequiredFieldValidator InitialValue="0"
Run Code Online (Sandbox Code Playgroud)

然后,当--Select--选择该选项并尝试提交页面时.该asp:RequiredFieldValidator会火.

编辑

我不喜欢你所展示的sql的外观:

Select Distinct 
    'name' As [OrgCode],'Please Select' As [OrgName] 
FROM [MedOrganization] 
Union All 
SELECT [OrgCode], [OrgName] FROM [MedOrganization]
Run Code Online (Sandbox Code Playgroud)

不是一个性能vise很好的sql代码.你可以这样做:

Select
    'name' As [OrgCode],'Please Select' As [OrgName] 
Union All 
SELECT [OrgCode], [OrgName] FROM [MedOrganization]
Run Code Online (Sandbox Code Playgroud)

为什么要在distinct那里使用?当你可以选择上面的那样.回到问题.您可以尝试将InitialValue集合设置为name:

<asp:RequiredFieldValidator InitialValue="name"
Run Code Online (Sandbox Code Playgroud)