Панели вкладок Ajax запускают проверку для других вкладок в ASP.Net 4.0

#c# #asp.net #ajax #tabpanel

#c# #asp.net #ajax #панель вкладок

Вопрос:

У меня есть панель вкладок Ajax со вкладкой «Список сотрудников», «Добавить сотрудника», «Редактировать сотрудника»

По списку сотрудников вкладке я использую GridView для отображения списка сотрудников вместе с кнопкой, чтобы посмотреть подробности работника на одной вкладке и «дел» кнопку, чтобы удалить сотрудника. Это сработало нормально, но когда я добавил элементы управления на вторую вкладку «Добавить сотрудника» вместе с элементами управления проверкой. После этого gridview на первой вкладке не работает, поскольку он запускает проверку на второй вкладке.

Как я могу остановить эту проверку, которая запускается элементами управления на вкладке 1

Ниже приведен код

    <asp:TabContainer ID="TabContainer1" runat="server" Height="320px" Width="100%" 
        ActiveTabIndex="0" >
    <asp:TabPanel ID="atpEmployeeList" runat="server"   >
    <HeaderTemplate>Employee List</HeaderTemplate>
    <ContentTemplate>
    <table border="0"  width="100%" cellpadding="0" cellspacing="0">
    <tr>
    <td class="style1" align="left" valign="top">
    <b>Employee List</b>
            <asp:GridView ID="gvEmployeeList" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="eCode" BackColor="White" BorderColor="#336666" 
            BorderStyle="None" BorderWidth="2px" CellPadding="4" 
            GridLines="Horizontal" onrowcommand="gvEmployeeList_RowCommand" 
            onrowdatabound="gvEmployeeList_RowDataBound"  >
            <Columns>
                <asp:BoundField DataField="eSno" HeaderText="ID" InsertVisible="False" 
                    ReadOnly="True" SortExpression="eSno" />
                <asp:BoundField DataField="eFirstName" HeaderText="First Name" 
                    SortExpression="eFirstName" />
                <asp:BoundField DataField="eLastName" HeaderText="Last Name" 
                    SortExpression="eLastName" />
                <asp:BoundField DataField="eDepartment" HeaderText="Department" 
                    SortExpression="eDepartment" />
                <asp:BoundField DataField="eSalary" HeaderText="Salary" 
                    SortExpression="eSalary" />
   <asp:TemplateField HeaderText="Details">
     <ItemTemplate>
       <asp:LinkButton ID="lnkBtnEmpDetails" CommandArgument='<%# Eval("eSno") %>' CommandName="ViewDetails" runat="server">
         View</asp:LinkButton>
     </ItemTemplate>
   </asp:TemplateField>
   <asp:TemplateField HeaderText="Delete">
     <ItemTemplate>
       <asp:LinkButton ID="lnkBtnEmpDelete" CommandArgument='<%# Eval("eSno") %>' CommandName="Delete" runat="server">
         Del</asp:LinkButton>
     </ItemTemplate>
   </asp:TemplateField>
            </Columns>
            <FooterStyle BackColor="White" ForeColor="#333333" />
            <HeaderStyle BackColor="#336699" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#336699" ForeColor="White" HorizontalAlign="Right" />
            <RowStyle BackColor="White" ForeColor="#333333" />
            <SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
            <SortedAscendingCellStyle BackColor="#F7F7F7" />
            <SortedAscendingHeaderStyle BackColor="#487575" />
            <SortedDescendingCellStyle BackColor="#E5E5E5" />
            <SortedDescendingHeaderStyle BackColor="#275353" />
        </asp:GridView>
    </td>
    <td width="250px" align="left" valign="top">
    <b>Employee Details</b>
        <br />
        <table width="280px" align="left" cellpadding="3" cellspacing="0" >
            <tr>
                <td class="style8" bgcolor="#336699">
                    Code</td>
                <td>
                    <asp:Label ID="lblEmpCode" runat="server" ></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style8" bgcolor="#336699">
                    Fisrt Name</td>
                <td>
                    <asp:Label ID="lblFirstName" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style5" bgcolor="#336699">
                    Last Name</td>
                <td class="style6">
                    <asp:Label ID="lblLastName" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style8" bgcolor="#336699">
                    Designation</td>
                <td>
                    <asp:Label ID="lblDesignation" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style8" bgcolor="#336699">
                    Department</td>
                <td>
                    <asp:Label ID="lblDepartment" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style8" bgcolor="#336699">
                    Salary</td>
                <td>
                    <asp:Label ID="lblSalary" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style8" bgcolor="#336699">
                    Join Date</td>
                <td>
                    <asp:Label ID="lblJoinDate" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style8" bgcolor="#336699">
                    Phone</td>
                <td>
                    <asp:Label ID="lblPhone" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style8" bgcolor="#336699">
                    Address</td>
                <td>
                    <asp:Label ID="lblAddress" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style8" bgcolor="#336699">
                    City</td>
                <td>
                    <asp:Label ID="lblCity" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="style4">
                    amp;nbsp;</td>
                <td>
                    amp;nbsp;</td>
            </tr>
        </table>
    </td>
    </tr>
    </table>
    </ContentTemplate>
    </asp:TabPanel>

    <asp:TabPanel ID="atpAddEmployee" runat="server" >
    <HeaderTemplate>Add Employee</HeaderTemplate>
    <ContentTemplate>
    <div><b>Enter Details of New Employee</b></div>
    <table border="0px"><tr>
    <td width="400px">
    <div class="spacer"></div>
           <div class="row">
                <asp:Label ID="lblAEmpCode" CssClass="txtLabel" runat="server" Text="Code :"></asp:Label>
                <asp:TextBox ID="txtACode" runat="server" CssClass="txt4Digit"></asp:TextBox>
                <asp:RequiredFieldValidator ID="rfvCode" runat="server" ErrorMessage="*" 
                    ControlToValidate="txtACode"></asp:RequiredFieldValidator>
           </div>
           <div class="row">
                <asp:Label ID="lblAFN" CssClass="txtLabel" runat="server" Text="First Name :"></asp:Label>
                <asp:TextBox ID="txtAFN" runat="server" CssClass="txtbox"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*" 
                    ControlToValidate="txtAFN"></asp:RequiredFieldValidator>
           </div>
           <div class="row">
                <asp:Label ID="lblALN" CssClass="txtLabel" runat="server" Text="Last Name :"></asp:Label>
                <asp:TextBox ID="txtALN" runat="server" CssClass="txtbox"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*" 
                    ControlToValidate="txtALN"></asp:RequiredFieldValidator>
           </div>
           <div class="row">
                <asp:Label ID="lblADesignation" CssClass="txtLabel" runat="server" Text="Designation :"></asp:Label>
                <asp:TextBox ID="txtADesignation" runat="server" CssClass="txtbox"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="*" 
                    ControlToValidate="txtADesignation"></asp:RequiredFieldValidator>
           </div>
           <div class="row">
                <asp:Label ID="lblADepartment" CssClass="txtLabel" runat="server" Text="Department :"></asp:Label>
                <asp:TextBox ID="txtADepartment" runat="server" CssClass="txtbox"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="*" 
                    ControlToValidate="txtADepartment"></asp:RequiredFieldValidator>
           </div>
           <div class="row">
                <asp:Label ID="lblASalary" CssClass="txtLabel" runat="server" Text="Salary :"></asp:Label>
                <asp:TextBox ID="txtASalary" runat="server" CssClass="txtbox"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ErrorMessage="*" 
                    ControlToValidate="txtASalary"></asp:RequiredFieldValidator>
           </div>
           <div class="row">
                <asp:Label ID="lblAJoinDate" CssClass="txtLabel" runat="server" Text="Join Date :"></asp:Label>
                <asp:TextBox ID="txtAJoinDate" runat="server" CssClass="txtbox"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ErrorMessage="*" 
                    ControlToValidate="txtAJoinDate"></asp:RequiredFieldValidator>
           </div>
    </td>
    <td width="400px">
        <div class="spacer"></div>
           <div class="row">
                <asp:Label ID="lblAAddress" CssClass="txtLabel" runat="server" Text="Address :"></asp:Label>
                <asp:TextBox ID="txtAAddress" runat="server" CssClass="txtbox"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" ErrorMessage="*" 
                    ControlToValidate="txtAAddress"></asp:RequiredFieldValidator>
           </div>
           <div class="row">
                <asp:Label ID="lblACity" CssClass="txtLabel" runat="server" Text="City :"></asp:Label>
                <asp:TextBox ID="txtACity" runat="server" CssClass="txtbox"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator8" runat="server" ErrorMessage="*" 
                    ControlToValidate="txtACity"></asp:RequiredFieldValidator>
           </div>
           <div class="row">
                <asp:Label ID="lblACountry" CssClass="txtLabel" runat="server" Text="Country :"></asp:Label>
                        <asp:UpdatePanel ID="updatepanel1" runat="server">
                            <ContentTemplate>
                            <asp:DropDownList ID="ddCountry" runat="server" CssClass="ddGeneral" DataTextField="Country" 
                                DataValueField="CountryId" OnSelectedIndexChanged="ddCountry_SelectedIndexChanged"
                                AutoPostBack="true" AppendDataBoundItems="true" >
                                <asp:ListItem Value="0">Select Country</asp:ListItem>
                            </asp:DropDownList>
                        </ContentTemplate>
                    </asp:UpdatePanel>
           </div>
           <div class="row">
                <asp:Label ID="lblAState" CssClass="txtLabel" runat="server" Text="State :"></asp:Label>
                <asp:UpdatePanel ID="updatePnlState" runat="server">
                    <ContentTemplate>
                    <asp:DropDownList ID="ddState" runat="server" CssClass="ddGeneral" DataTextField="Region" DataValueField="RegionId" AppendDataBoundItems="true">
                    <asp:ListItem Value="0">Select State</asp:ListItem>
                    </asp:DropDownList>
                </ContentTemplate>
                </asp:UpdatePanel>
                <asp:UpdateProgress ID="updProgLoading" runat="server" >
                <ProgressTemplate>
                    <img src="images/ajax-loader-small.gif" align="left" alt="Loading..." vspace="0"  />amp;nbsp;
                </ProgressTemplate>
                </asp:UpdateProgress>
           </div>
           <div class="row">
                <asp:Label ID="lblALL" CssClass="txtLabel" runat="server" Text="Landline :"></asp:Label>
                <asp:TextBox ID="txtALL" runat="server" CssClass="txtbox"></asp:TextBox>
           </div>
           <div class="row">
                <asp:Label ID="lblAMobile" CssClass="txtLabel" runat="server" Text="Mobile :"></asp:Label>
                <asp:TextBox ID="txtAMobile" runat="server" CssClass="txtbox"></asp:TextBox>
           </div>
           <div class="row">
                <asp:Label ID="lblAEmail" CssClass="txtLabel" runat="server" Text="Email :"></asp:Label>
                <asp:TextBox ID="txtAEmail" runat="server" CssClass="txtbox"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator13" runat="server" ErrorMessage="*" 
                    ControlToValidate="txtAEmail"></asp:RequiredFieldValidator>
    </div>
    </td>
    </tr>
    <tr><td colspan="2" align="center" height="40px">

        <asp:Button ID="btnAddEmployee" runat="server" Text="Add Employee" 
            CssClass="btn" onclick="btnAddEmployee_Click" /> <input id="Reset1" type="reset" class="btn" value="Reset" />
    </td></tr>
    </table>
   </ContentTemplate>
    </asp:TabPanel>

    <asp:TabPanel ID="atpEditEmployee" runat="server" >
    <HeaderTemplate>Edit Employee</HeaderTemplate>
                <ContentTemplate>
                    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
                    <input id="Button2" type="button" value="Next" onclick="MoveTab(1)" />
                </ContentTemplate>
    </asp:TabPanel>

    </asp:TabContainer>
  

Ответ №1:

Вам следует рассмотреть возможность использования ValidationGroup атрибута для средств проверки. Например, для всех средств проверки на atpAddEmployee вкладке вы бы установили атрибут типа so ValidationGroup="atpAddEmployee" или любое другое имя, которое считаете подходящим.

Я взял один из средств проверки с atpAddEmployee вкладки и добавил атрибут, как описано выше.

 <asp:RequiredFieldValidator ID="rfvCode" runat="server" ErrorMessage="*" ControlToValidate="txtACode" ValidationGroup="atpAddEmployee"></asp:RequiredFieldValidator>
  

Для этой конкретной вкладки вам также потребуется добавить атрибут ValidationGroup к кнопке, которая должна запускать проверку, см. Ниже.

 <asp:Button ID="btnAddEmployee" runat="server" Text="Add Employee" CssClass="btn" onclick="btnAddEmployee_Click" ValidationGroup="atpAddEmployee" />
  

Немного подробнее о MSDN и W3Schools.

Комментарии:

1. Большое вам спасибо.. Ценю вашу помощь.

2. Ваш ответ с примером был превосходным и очень понятным, мне почти не потребовалось времени для реализации вашей идеи и спас мой день. Еще раз спасибо..