必需的字段验证器在更新面板中消失

时间:2014-04-28 22:37:27

标签: asp.net validation

我有一个包含GridView的更新面板。验证3个TextBox和DropDownList控件。我还在面板中有3个不同的DDL和3个Checkbox控件,每个控件都触发Gridview的重新绑定。当其中一个未经验证的DDL或Checkbox更改时,它们都会触发相同的已更改事件,并且我将丢失TextBox和1 DDL上的所有验证。

我是否应该在已验证或未验证的控件上设置初始值,如果我应该对验证进行“分组”,以及哪组控件需要设置CausesValidation标志,我有点困惑。我讨厌使用大量代码发送垃圾邮件,但考虑到此更新面板中有多少......

<asp:UpdatePanel ID="UpdatePanel_Search" runat="server" >
        <ContentTemplate>
            <table class="auto-style2">
                <tr>
                    <td>
                        <table class="auto-style1">
                            <tr>
                                <td class="auto-style3">
                                    <div>
                                        <table class="auto-style1" border="1px" frame="void">
                                            <tr>
                                                <td bgcolor="#00198D" style="text-align: center" class="auto-style19">
                                                    <asp:Label ID="FilterLabel3" runat="server" ForeColor="White" Text="Used by OEM"></asp:Label>
                                                </td>
                                                <td bgcolor="#00198D" style="text-align: center" class="auto-style9">
                                                    <asp:Label ID="FilterLabel4" runat="server" ForeColor="White" Text="Item Type"></asp:Label>
                                                </td>
                                                <td bgcolor="#00198D" style="text-align: center" class="auto-style24">
                                                    <asp:Label ID="FilterLabel5" runat="server" ForeColor="White" Text="Group Type"></asp:Label>
                                                </td>
                                                <td bgcolor="#00198D" style="text-align: center" class="auto-style12">
                                                    <asp:Label ID="FilterLabel6" runat="server" ForeColor="White" Text="Part Active"></asp:Label>
                                                </td>
                                                <td bgcolor="#00198D" style="text-align: center" class="auto-style17">
                                                    <asp:Label ID="FilterLabel7" runat="server" ForeColor="White" Text="Non-Inventory Part"></asp:Label>
                                                </td>
                                                <td bgcolor="#00198D" style="text-align: center" class="auto-style7">
                                                    <asp:Label ID="FilterLabel8" runat="server" ForeColor="White" Text="Part In Stock"></asp:Label>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td class="auto-style19">
                                                    <asp:DropDownList ID="DDL_OEM" runat="server" Height="27px" Width="150px" AutoPostBack="True" AppendDataBoundItems="True" OnSelectedIndexChanged="Filter_DataSet" ></asp:DropDownList>
                                                </td>
                                                <td class="auto-style9">
                                                    <asp:DropDownList ID="DDL_ItemTypes" runat="server" Height="27px" Width="150px" AutoPostBack="True" AppendDataBoundItems="True" OnSelectedIndexChanged="Filter_DataSet" ></asp:DropDownList>
                                                </td>
                                                <td class="auto-style9">
                                                    <asp:DropDownList ID="DDL_GroupTypes" runat="server" Height="27px" Width="150px" AutoPostBack="True" AppendDataBoundItems="True" OnSelectedIndexChanged="Filter_DataSet" ></asp:DropDownList>
                                                </td>
                                                <td class="auto-style12">
                                                    <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" OnCheckedChanged="Filter_DataSet" Checked="True" Style="text-align: center"  />
                                                </td>
                                                <td class="auto-style17">
                                                    <asp:CheckBox ID="CheckBox2" runat="server" AutoPostBack="True" OnCheckedChanged="Filter_DataSet" Style="text-align: center" />
                                                </td>
                                                <td class="auto-style7">
                                                    <asp:CheckBox ID="CheckBox3" runat="server" AutoPostBack="True" OnCheckedChanged="Filter_DataSet" Style="text-align: center" />
                                                </td>

                                            </tr>
                                        </table>
                                        <div>
                                            <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
                                                ControlToValidate="TextBox_Ticket_Search"  
                                                ErrorMessage="Ticket Number is Required. Enter  NOTICKET  if the item you are requesting is for your tech stock(i.e. a tool, USB drive, etc.)"
                                                ForeColor="Red">
                                            </asp:RequiredFieldValidator>

                                        </div>
                                        <div>
                                            <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server"
                                                ControlToValidate="TextBox_Part_Search" 
                                                ErrorMessage="Part Number is Required. Select a Part from the Catalog before submitting a request."
                                                ForeColor="Red">
                                            </asp:RequiredFieldValidator>
                                        </div>
                                        <div>
                                            <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server"
                                                ControlToValidate="TextBox_Serial_Search" 
                                                ErrorMessage="System Serial Number is Required. Enter  NOSERIAL  if the item you are requesting is for your tech stock(i.e. a tool, USB drive, etc.)"
                                                ForeColor="Red">
                                            </asp:RequiredFieldValidator>
                                        </div>
                                        <div>
                                            <asp:RequiredFieldValidator ID="RequiredFieldValidator11" runat="server"
                                                ControlToValidate="DDL_OEM_submit0" 
                                                ErrorMessage="System Model is a required field. Please select a Model from the Drop Down below."
                                                InitialValue="0"
                                                ForeColor="Red">
                                            </asp:RequiredFieldValidator>
                                        </div>
                                </td>

                            </tr>
                            <table class="auto-style1">
                                <tr>
                                    <td class="auto-style34">
                                        <table class="auto-style1">
                                            <tr>
                                                <td>
                                                    <asp:Label ID="Label_Comments_Search" runat="server" Text="Comments:"></asp:Label>
                                                </td>
                                            </tr>
                                            <tr>
                                                <td style="text-align: left">
                                                    <asp:TextBox runat="server"
                                                        ID="TextBox_Comments_Search"
                                                        TextMode="multiline"
                                                        TextWrapping="Wrap"
                                                        AcceptsReturn="True"
                                                        VerticalScrollBarVisibility="Visible" Height="100px" Width="300px">
                                                    </asp:TextBox>
                                                </td>
                                            </tr>
                                        </table>
                                    </td>
                                    <td class="auto-style29">
                                        <table class="auto-style1">
                                            <tr>
                                                <td class="auto-style4">
                                                    <asp:Label ID="Label_Ticket_Search" runat="server" Text="Ticket #:"></asp:Label>
                                                </td>
                                                <td class="auto-style32">
                                                    <asp:TextBox ID="TextBox_Ticket_Search" runat="server"></asp:TextBox>
                                                    <span class="auto-style23">*</span></td>
                                    </td>
                                </tr>
                                <tr>
                                    <td style="text-align: right">
                                        <asp:Label ID="Label_Part_Search" runat="server" Text="Part #:"></asp:Label>

                                    </td>
                                    <td class="auto-style32">
                                        <asp:TextBox ID="TextBox_Part_Search" runat="server" ReadOnly="true" BackColor="#CCCCCC"></asp:TextBox>
                                        <span class="auto-style23">*</span>
                                    </td>
                                </tr>
                                <tr>
                                    <td style="text-align: right" class="auto-style21">
                                        <asp:Label ID="Label12" runat="server" Text="Serial #:"></asp:Label></td>
                                    <td class="auto-style32">
                                        <asp:TextBox ID="TextBox_Serial_Search" runat="server"></asp:TextBox>
                                        <span class="auto-style23">*</span></td>
                                </tr>
                                <tr>
                                    <td style="text-align: right" class="auto-style21">
                                        <asp:Label ID="Label_Damage_Search" runat="server" Text="Part Damaged:"></asp:Label>
                                    </td>
                                    <td style="text-align: left" class="auto-style31">
                                        <asp:CheckBox ID="CheckBox_Damage_Search" runat="server"></asp:CheckBox>
                                    </td>
                                </tr>
                            </table>
                    </td>
                    <td>
                        <table class="auto-style25">
                            <tr>
                                <td>
                                    <table class="auto-style25">
                                        <tr>
                                            <td>
                                                <asp:Label ID="Label15" runat="server" Style="text-align: left" Text="Model:"></asp:Label>
                                            </td>
                                            <td align="left">
                                                <asp:DropDownList ID="DDL_OEM_submit0" runat="server">
                                                </asp:DropDownList>
                                                <span class="auto-style23">*</span>
                                            </td>
                                        </tr>
                                    </table>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <asp:Button ID="Button2" runat="server" Text="Submit Part Request" OnClick="Button2_Click" />
                                </td>
                            </tr>
                        </table>
                    </td>
                    <table class="auto-style1">
                        <tr>
                            <td>

                                <table class="auto-style1">
                                    <tr>
                                        <td class="auto-style8" valign="top">
                                            <asp:GridView ID="GridView1"
                                                runat="server"
                                                AutoGenerateColumns="False"
                                                DataKeyNames="ID"
                                                DataSourceID="SqlDataSource1"
                                                EnableModelValidation="True"
                                                AllowSorting="True"
                                                OnSelectedIndexChanged="Gridview1_SelectedIndexChanged"
                                                AutoGenerateSelectButton="True"
                                                BackColor="White"
                                                BorderColor="#999999"
                                                BorderStyle="None"
                                                BorderWidth="1px"
                                                CellPadding="3"
                                                GridLines="Vertical" HorizontalAlign="Justify">

                                                <FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
                                                <HeaderStyle BackColor="#00198D" ForeColor="White" />
                                                <PagerStyle ForeColor="Black" BackColor="#999999" HorizontalAlign="Center" />

                                                <AlternatingRowStyle BackColor="#DCDCDC" />
                                                <EmptyDataTemplate>
                                                    No records could be retrieved from the database.  We apologize for the inconvenience.
                                                </EmptyDataTemplate>

                                                <Columns>
                                                    <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" />
                                                    <asp:BoundField DataField="OEMPartCode" HeaderText="OEMPartCode" SortExpression="OEMPartCode" />
                                                    <asp:BoundField DataField="OEM" HeaderText="OEM" InsertVisible="False" ReadOnly="True" SortExpression="OEM" />
                                                    <asp:BoundField DataField="Sub Categories" HeaderText="Models" InsertVisible="False" ReadOnly="True" SortExpression="Sub Categories" />
                                                </Columns>
                                                <RowStyle BackColor="#EEEEEE" ForeColor="Black" />
                                                <SelectedRowStyle BackColor="Red" Font-Bold="True" ForeColor="White" />
                                            </asp:GridView>
                                        </td>
                                        <td style="text-align: left" valign="top">
                                            <asp:DetailsView
                                                ID="DetailsView1"
                                                runat="server"
                                                DataSourceID="SqlDataSource2"
                                                Height="50px"
                                                Width="556px"
                                                CellPadding="4"
                                                AutoGenerateRows="False"
                                                OnDataBound="DetailsView1_OnDataBound"
                                                ForeColor="White"
                                                EnableModelValidation="True"
                                                DataKeyNames="ID"
                                                HorizontalAlign="Left"
                                                Style="margin-right: 0px">

                                                <FieldHeaderStyle BackColor="#00198D" Font-Bold="True" ForeColor="White" />
                                                <Fields>
                                                    <asp:BoundField DataField="ID" HeaderText="ID" />
                                                    <asp:BoundField DataField="OEMPartCode" HeaderText="OEMPartCode" />
                                                    <asp:BoundField DataField="PartCode2" HeaderText="PartCode2" />
                                                    <asp:TemplateField HeaderText="UsedByOEM">
                                                        <ItemTemplate>
                                                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("UsedByOEM") %>'></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField HeaderText="ItemType">
                                                        <ItemTemplate>
                                                            <asp:Label ID="Label2" runat="server" Text='<%# Bind("JoinedItemType") %>'></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField HeaderText="GroupType">
                                                        <ItemTemplate>
                                                            <asp:Label ID="Label3" runat="server" Text='<%# Bind("JoinedGroupType") %>'></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:BoundField DataField="PartDesc" HeaderText="PartDescription" SortExpression="PartDesc" />
                                                    <asp:BoundField DataField="PartComment" HeaderText="PartComment" SortExpression="PartComment" />
                                                    <asp:BoundField DataField="PartCount" HeaderText="PartCount" SortExpression="PartCount" />
                                                    <asp:BoundField DataField="PartMin" HeaderText="PartMin" SortExpression="PartMin" />
                                                    <asp:CheckBoxField DataField="PartActive" HeaderText="PartActive" SortExpression="PartActive" />
                                                    <asp:BoundField DataField="MFRPartNumber" HeaderText="MFRPartNumber" SortExpression="MFRPartNumber" />
                                                    <asp:BoundField DataField="PartCapacity" HeaderText="PartCapacity" SortExpression="PartCapacity" />
                                                    <asp:CheckBoxField DataField="PreTurnRequired" HeaderText="PreTurnRequired" SortExpression="PreTurnRequired" />
                                                    <asp:TemplateField HeaderText="AssemblyPart">
                                                        <ItemTemplate>
                                                            <asp:Label ID="Label_AssemblyPart" runat="server" Text='<%# Bind("AssemblyPart") %>'></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField HeaderText="Part Image">
                                                        <ItemTemplate>
                                                            <a href="javascript:void(window.open('<%# "ShowImage.aspx?PID="+ Eval("PartImage")%>','_blank','toolbar=no,menubar=no'))">
                                                                <asp:Image ID="FullImage" ToolTip="Click to download the full size image."
                                                                    runat="server" ImageUrl='<%# "ShowThumb.aspx?size=120&PID="+ Eval("PartImage")  %>' /></a>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>

                                                    <asp:TemplateField HeaderText="Part Image 2">
                                                        <ItemTemplate>
                                                            <a href="javascript:void(window.open('<%# "ShowImage.aspx?PID="+ Eval("PartImage2")%>','_blank','toolbar=no,menubar=no'))">
                                                                <asp:Image ID="Image1" ToolTip="Click to download the full size image."
                                                                    runat="server" ImageUrl='<%# "ShowThumb.aspx?size=120&PID="+ Eval("PartImage2")  %>' /></a>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:CheckBoxField DataField="NonInventoryPart" HeaderText="NonInventoryPart" SortExpression="NonInventoryPart" />
                                                    <asp:TemplateField HeaderText="Updated By">
                                                        <ItemTemplate>
                                                            <asp:Label ID="UserNameLabel" runat="server" Text='<%# Bind("CreatedByUser") %>' ReadOnly="True"></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField HeaderText="Last Modified">
                                                        <ItemTemplate>
                                                            <asp:Label ID="ModifiedDateLabel" runat="server" Text='<%# Bind("LastModifiedDate") %>' ReadOnly="True"></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                </Fields>
                                                <FooterStyle BackColor="#00198D" Font-Bold="True" ForeColor="White" />
                                                <HeaderStyle BackColor="#00198D" Font-Bold="True" ForeColor="White" />
                                                <RowStyle BackColor="White" ForeColor="Black" Width="300px" />
                                            </asp:DetailsView>

                                        </td>
                                    </tr>
                                </table>

                            </td>
                        </tr>
                    </table>
            </table>
            </td>
                </tr>
            </table>
            </table>
            </td>
            </tr>
            </table>
            </table>
            </td>
            </tr>
            </table>
           <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
               DataSourceMode="DataSet" 
               SelectCommand="SELECT Stuff">
               <FilterParameters>
                   <asp:ControlParameter Name="UsedByOEM" ControlID="DDL_OEM" PropertyName="SelectedValue" />
                   <asp:ControlParameter Name="ItemType" ControlID="DDL_ItemTypes" PropertyName="SelectedValue" />
                   <asp:ControlParameter Name="GroupType" ControlID="DDL_GroupTypes" PropertyName="SelectedValue" />
               </FilterParameters>
           </asp:SqlDataSource>
            <a></a>
            <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
                ConflictDetection="CompareAllValues"
                SelectCommand="SELECT   Stuff">
                <SelectParameters>
                    <asp:ControlParameter ControlID="GridView1" Name="ID" PropertyName="SelectedValue" Type="Int32" />
                </SelectParameters>
            </asp:SqlDataSource>
        </ContentTemplate>
    </asp:UpdatePanel>

1 个答案:

答案 0 :(得分:0)

您是否尝试为控件提供组名?