c# - 放置验证器会扰乱面板布局

标签 c# asp.net css panel

当我将 RequiredFieldValidator 放入 asp.net 页面时,它会扰乱页面布局。它适用于所有地方,但在特定地方会扰乱页面布局。

放置验证器之前:

enter image description here

<asp:Panel ID="pnlSearchComplaint" Visible="false" BackColor="#dbdbdb"
             runat="server" Width="400px">
            <br />
            <label>Search By Subject</label>
            <asp:TextBox ID="txtSearchCompBySubject" runat="server" ></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator8" runat="server" 
                                ControlToValidate="txtSearchCompBySubject" ErrorMessage="Enter Subject" 
                                ForeColor="Red" ValidationGroup="GroupSearchCompSubject">Enter Subject
            </asp:RequiredFieldValidator>
            <br/>
            <asp:Button ID="btnSearchBySubject" ValidationGroup="GroupSearchCompSubject"  
                        CssClass="btn btn-success" runat="server" Text="Search" 
                        ClientIDMode="Static" OnClick="btnSearchBySubject_Click" />
            <asp:GridView ID="gridViewComplaintsBySubject" AllowPaging="true" OnPageIndexChanging="gridViewComplaintsBySubject_PageIndexChanging" AutoGenerateSelectButton="true" runat="server" CssClass="mGrid" OnSelectedIndexChanged="gridViewComplaintsBySubject_SelectedIndexChanged" Width="408px">
             <EmptyDataRowStyle BorderStyle="None" ForeColor="Red" BorderWidth="0px" />
             <EmptyDataTemplate>
               No Data Found for this Input. Try Again.
             </EmptyDataTemplate> 
             <SelectedRowStyle CssClass="selected-row"  ForeColor="white" />
           </asp:GridView>
            <br />
            <label>Search By Date</label>
            <asp:Label ID="lblDateFrom" runat="server" Text="From"></asp:Label>
            <asp:TextBox ID="txtFromDate" runat="server" ></asp:TextBox>
           <asp:CalendarExtender ID="CalendarExtenderFromDate" TargetControlID="txtFromDate" runat="server">
            </asp:CalendarExtender>
            <asp:Label ID="lblDateTo" runat="server" Text="To"></asp:Label>
            <asp:TextBox ID="txtToDate" runat="server"></asp:TextBox>
            <asp:CalendarExtender ID="CalendarExtenderToDate" TargetControlID="txtToDate" runat="server">
            </asp:CalendarExtender>
            <asp:Button ID="btnSearchByDate"  CssClass="btn btn-success" runat="server" Text="Search" 
                        ClientIDMode="Static" OnClick="btnSearchByDate_Click" />
            <asp:GridView ID="gridViewComplaintsByDate" AllowPaging="true"  AutoGenerateSelectButton="true" runat="server" CssClass="mGrid"  Width="408px" OnPageIndexChanging="gridViewComplaintsByDate_PageIndexChanging" OnSelectedIndexChanged="gridViewComplaintsByDate_SelectedIndexChanged">
             <EmptyDataRowStyle BorderStyle="None" ForeColor="Red" BorderWidth="0px" />
             <EmptyDataTemplate>
               No Data Found for this Input. Try Again.
             </EmptyDataTemplate> 
             <SelectedRowStyle CssClass="selected-row"  ForeColor="white" />
           </asp:GridView>
           <br />
    </asp:Panel>

放置验证器后:

enter image description here

代码:

<asp:Panel ID="pnlSearchComplaint" Visible="false" BackColor="#dbdbdb"
             runat="server" Width="400px">
            <br />
            <label>Search By Subject</label>
            <asp:TextBox ID="txtSearchCompBySubject" runat="server" ></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator8" runat="server" 
                                ControlToValidate="txtSearchCompBySubject" ErrorMessage="Enter Subject" 
                                ForeColor="Red" ValidationGroup="GroupSearchCompSubject">Enter Subject
            </asp:RequiredFieldValidator>
            <br/>
            <asp:Button ID="btnSearchBySubject" ValidationGroup="GroupSearchCompSubject"  
                        CssClass="btn btn-success" runat="server" Text="Search" 
                        ClientIDMode="Static" OnClick="btnSearchBySubject_Click" />
            <asp:GridView ID="gridViewComplaintsBySubject" AllowPaging="true" OnPageIndexChanging="gridViewComplaintsBySubject_PageIndexChanging" AutoGenerateSelectButton="true" runat="server" CssClass="mGrid" OnSelectedIndexChanged="gridViewComplaintsBySubject_SelectedIndexChanged" Width="408px">
             <EmptyDataRowStyle BorderStyle="None" ForeColor="Red" BorderWidth="0px" />
             <EmptyDataTemplate>
               No Data Found for this Input. Try Again.
             </EmptyDataTemplate> 
             <SelectedRowStyle CssClass="selected-row"  ForeColor="white" />
           </asp:GridView>
            <br />
            <label>Search By Date</label>
            <asp:Label ID="lblDateFrom" runat="server" Text="From"></asp:Label>
            <asp:TextBox ID="txtFromDate" runat="server" ></asp:TextBox>

             <asp:RequiredFieldValidator ID="RequiredFieldValidator9" runat="server" 
                                ControlToValidate="txtFromDate" ErrorMessage="Enter Subject" 
                                ForeColor="Red" ValidationGroup="GroupSearchCompSubject">Enter Subject
            </asp:RequiredFieldValidator>

             <asp:CalendarExtender ID="CalendarExtenderFromDate" TargetControlID="txtFromDate" runat="server">
            </asp:CalendarExtender>
            <asp:Label ID="lblDateTo" runat="server" Text="To"></asp:Label>
            <asp:TextBox ID="txtToDate" runat="server"></asp:TextBox>
            <asp:CalendarExtender ID="CalendarExtenderToDate" TargetControlID="txtToDate" runat="server">
            </asp:CalendarExtender>
            <asp:Button ID="btnSearchByDate"  CssClass="btn btn-success" runat="server" Text="Search" 
                        ClientIDMode="Static" OnClick="btnSearchByDate_Click" />
            <asp:GridView ID="gridViewComplaintsByDate" AllowPaging="true"  AutoGenerateSelectButton="true" runat="server" CssClass="mGrid"  Width="408px" OnPageIndexChanging="gridViewComplaintsByDate_PageIndexChanging" OnSelectedIndexChanged="gridViewComplaintsByDate_SelectedIndexChanged">
             <EmptyDataRowStyle BorderStyle="None" ForeColor="Red" BorderWidth="0px" />
             <EmptyDataTemplate>
               No Data Found for this Input. Try Again.
             </EmptyDataTemplate> 
             <SelectedRowStyle CssClass="selected-row"  ForeColor="white" />
           </asp:GridView>
           <br />
        </asp:Panel>

最佳答案

请在您的验证控件中设置“Display='dynamic'”属性。

<asp:RequiredFieldValidator Display="Dynamic"></asp:RequiredFieldValidator>

如果您不想在显示消息时打扰您的 UI

<asp:RequiredFieldValidator Display="Dynamic" ErrorMessage="*" ToolTip="Set your message here"></asp:RequiredFieldValidator>

编辑 1:

<label>
    Search By Date</label>
<asp:Label ID="lblDateFrom" runat="server" Text="From"></asp:Label>
<asp:TextBox ID="txtFromDate" runat="server"></asp:TextBox>
<asp:Label ID="lblDateTo" runat="server" Text="To"></asp:Label>
<asp:TextBox ID="txtToDate" runat="server"></asp:TextBox>
<div>
    <asp:RequiredFieldValidator Display="Dynamic" ID="RequiredFieldValidator9" runat="server" ControlToValidate="txtFromDate"
        ErrorMessage="Enter Subject" ForeColor="Red" ValidationGroup="GroupSearchCompSubject">Enter Subject
    </asp:RequiredFieldValidator>
</div>
<asp:Button ID="btnSearchByDate" CssClass="btn btn-success" runat="server" Text="Search"
    ClientIDMode="Static" />

关于c# - 放置验证器会扰乱面板布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23537883/

相关文章:

javascript - 嵌套 Accordion 不会以 h2 作为链接关闭

css - 仅使用 css 更改另一个 div 的样式

css - 当视口(viewport)宽度变小时,div 是否可以不折叠?

c# - wpf:如何编辑可能取消的选定项目?

c# - 在 C# 中比较两个列表,并使用 LINQ 或 foreach 根据条件拒绝或选择子列表

c# - 将 float 转换为 double

c# - System.IO.FileInfo 不区分大小写的搜索

c# - 在回发时保持动态添加的用户控件的状态?

c# - ASP.NET WebForms 使用 IoC 动态加载 WebUserControls

c# - 为什么 ASP.NET 网站没有 designer.cs?