패널 내 드롭 다운 목록에 requiredFieldValidator가 있습니다. 드롭 다운에서 데이터를 선택하지 않으면 btnSubmitReport가 유효하게 작동하고 * 표시됩니다. 데이터를 선택하고 btnSubmitReport를 클릭하여 데이터를 표시하면 여전히 정상적으로 작동합니다. 이제 드롭 다운을 선택 취소하고 btnSubmitReport를 누르면 더 이상 유효성 검사를 수행하지 않습니다. 이것은 처음 btnSubmitReport_Click을 클릭했기 때문에 Page.IsValid가 호출되는지 확인하고 JavaScript 코드를 호출하지만 후속 호출은 JavaScript 코드를 호출하기 만하고 btnSubmitReport_Click은 페이지가 유효한지 확인하기 위해 호출되지 않기 때문입니다. 제발 제안 해주세요. 여기자바 스크립트 코드로 페이지 유효성 검사가 작동하지 않습니다.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testValidator.aspx.cs"
MasterPageFile="~/Site.master" Inherits="textXslt.testValidator" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript"></script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<script src="Styles/Reports.js" type="text/javascript"></script>
<h3>
<asp:Label ID="lblHeader" runat="server" Text="Reporting Filter"></asp:Label>
</h3>
<div style="text-align: right">
<input id="lnkShowFilter" type="button" value="Show Filter" onclick="ShowF()" class="btn" />
<input id="lnkHideFilter" type="button" value="Hide Filter" onclick="HideF()" class="btn" />
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div id="divFilter">
<asp:UpdatePanel ID="uplMain" runat="server">
<ContentTemplate>
<asp:PlaceHolder ID="PlaceHolder1" runat="server">
<table>
<tr>
<td valign="top">
<table>
<tr>
<td>
<asp:CheckBox ID="chkBusiness" runat="server" Text="Business Division" CssClass="chkbox" />
</td>
<td>
<asp:DropDownList ID="ddlBusiness" runat="server" AppendDataBoundItems="true" AutoPostBack="true"
CausesValidation="True" OnSelectedIndexChanged="ddlBusiness_SelectedIndexChanged"
ValidationGroup="grpSubmit" Width="350px">
<asp:ListItem Selected="True" Value="-1">--- SELECT ---</asp:ListItem>
<asp:ListItem>Orange</asp:ListItem>
<asp:ListItem>Apple</asp:ListItem>
<asp:ListItem>Mango</asp:ListItem>
</asp:DropDownList>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="rfvBusiness" runat="server" ControlToValidate="ddlBusiness"
Enabled="true" ToolTip="Please select a Business." ErrorMessage="*" InitialValue="-1"
ForeColor="Red" CssClass="required" Display="Dynamic" ValidationGroup="grpSubmit">
</asp:RequiredFieldValidator>
</td>
</tr>
</table>
</td>
</tr>
</table>
</asp:PlaceHolder>
<hr size="1" />
<div style="text-align: center">
<table style="width: 10%">
<tr>
<td>
<asp:Button ID="btnHome" runat="server" Text="Home" OnClick="btnHome_Click" CssClass="btn" />
</td>
<td>
<asp:Button ID="btnSubmitReport" runat="server" Text="Submit" OnClick="btnSubmitReport_Click"
ValidationGroup="grpSubmit" CssClass="btn" />
</td>
</tr>
</table>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<div id="divResult">
<asp:UpdatePanel ID="uplGrid" runat="server">
<ContentTemplate>
Here go Results of grid
</ContentTemplate>
</asp:UpdatePanel>
</div>
</asp:Content>
뒤에 코드 : 다음은 영문 페이지에서 샘플 코드는
protected void btnSubmitReport_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
btnSubmitReport.Attributes["onclick"] = "javascript:SubmitF();";
}
//then do rest of the processing to display grid results
}
가 여기에 Reports.js에 파일입니다 잘
function ShowF() {
$('#lnkShowFilter').hide();
$('#divFilter').show();
$('#lnkHideFilter').show();
$('#divResult').hide();
$('#MainContent_lblHeader').text("Reporting Filter");
}
function HideF() {
$('#lnkShowFilter').show();
$('#divFilter').hide();
$('#lnkHideFilter').hide();
$('#divResult').show();
$('#').show();
$('#MainContent_lblHeader').text("Report Result");
}
function SubmitF() {
// alert("SubmitF");
$('#lnkShowFilter').show();
$('#divFilter').hide();
$('#lnkHideFilter').hide();
$('#divResult').show();
$('#MainContent_lblHeader').text("Report Result");
}
에 OnclientClick과의 OnClick 모두 추가 - 폼을 제출 한 버튼의 'CausesValidation' 속성은 True로 설정되어 있습니다. 이것은 자동으로'Page.Validate'를 호출 할 것이고, 같은 ValidationGroup에 속하는 모든 Validation 컨트롤은 유효성을 검사 할 것입니다. – Webruster
@Webruster, 'if (Page.IsValid)'를 체크하지 않으면 페이지 유효성 검사가 일어나고 순간적으로 (*) 표시가 나타나지만 SubmitF가 호출되고 divFilter가 숨기고 divResult가 멈추고 자하는 경우에도 페이지가 유효하지 않은 한. 우리는 어떻게 그것을 성취 할 수 있습니까? – SilverFish
당신은 거기에 거대한 requriement 있어요. – Webruster