2015-04-14 46 views
0

我有一個嵌套網格。我想在用戶添加記錄時驗證子網格內的下拉控件。但是在嵌套網格中,控件ID不是唯一的。如果在每個父級下有兩個父行和一個嵌套網格,則子網格控件將具有相同的ID。當我驗證時,驗證是檢查所有嵌套的網格,而不僅僅是我試圖添加的網格。唯一標識嵌套gridview中的控件進行驗證

這是標記:

<asp:GridView ID="GroupGridView" runat="server" AutoGenerateColumns="False" 
      Caption="Group Information" CaptionAlign="Top" CssClass="grid" 
      ShowFooter="true" DataKeyNames="GroupID"> 
      <Columns> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <a href="javascript:DivExpandCollapse('div<%# Eval("GroupID")%>');"> 
         <img id="imgdiv<%# Eval("GroupID")%>" width="25px" border="0" src="Images/plus.png" /> </a> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="GroupID"> 
        <ItemTemplate> 
         <asp:Label ID="uggvLblGroupID" runat="server" Text='<%# Bind("GroupID") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Group Name"> 
        <ItemTemplate> 
         <asp:Label ID="uggvLblGroupName" runat="server" Text='<%# Bind("GroupName") %>'></asp:Label> 
        </ItemTemplate>  
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Action" ItemStyle-Wrap="false" ItemStyle-HorizontalAlign="Center"> 
        <ItemTemplate> 
         <asp:Button ID="uggvDeleteButton" runat="server" CausesValidation="False" CommandName="Delete" 
             Text="Delete" CssClass="gridActionbutton" OnClientClick="return confirm('Are you sure you want to delete this Group Information?')" > 
         </asp:Button> 
         <tr><td colspan="100%"> 
         <div id="div<%# Eval("GroupID") %>" style="display:none"> 
          <asp:GridView ID="GroupMemberGridView" runat="server" AutoGenerateColumns="false" 
            CssClass="grid" ShowFooter="true"> 
           <Columns> 
            <asp:TemplateField HeaderText="MemberID"> 
             <ItemTemplate> 
              <asp:Label ID="mggvLblMemberID" runat="server" Text='<%# Bind("MemberID") %>'></asp:Label> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Member Name" ItemStyle-Wrap="false"> 
             <ItemTemplate> 
              <asp:Label ID="mggvLblMemberName" runat="server" Text='<%# Bind("MemberName") %>'></asp:Label> 
             </ItemTemplate>    
             <FooterTemplate> 
              <asp:DropDownList ID="mggvDDLMemberName" runat="server" ClientIDMode="Static" 
               class="chosen-single" data-placeholder="Choose member…"> 
              </asp:DropDownList> 
              <asp:RequiredFieldValidator ID="ReqValueDDLMemberInsert" runat="server" InitialValue="0" 
                ControlToValidate="mggvDDLMemberName" ValidationGroup="'<%# "InsertGroupMemberValidation_" + Eval("GroupID") %>' 
                ErrorMessage="Selection required." CssClass="message-error-dropdown"> 
              </asp:RequiredFieldValidator>          
             </FooterTemplate> 
            </asp:TemplateField>         
            <asp:TemplateField HeaderText="Action" ItemStyle-Wrap="false" ItemStyle-HorizontalAlign="Center">       
             <FooterTemplate> 
              <asp:Button ID="mggvAddButton" runat="server" CommandName="Add" Text="Add Member" Width="90%" 
               CssClass="gridActionbutton" ValidationGroup='<%# "InsertGroupMemberValidation_" + Eval("GroupID") %>'> CausesValidation="true"> 
              </asp:Button> 
             </FooterTemplate> 
            </asp:TemplateField> 
           </Columns> 
          </asp:GridView> 
         </div> 
        </ItemTemplate>    
        <FooterTemplate> 
         <asp:Button ID="uggvAddButton" runat="server" CommandName="Add" Text="Add Group" Width="90%" CausesValidation="true" 
             CssClass="gridActionbutton" ValidationGroup="InsertGroupNameValidation" 
         </asp:Button> 
        </FooterTemplate> 
        </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 

無論哪個「添加成員」按鈕,我點擊,驗證被觸發的所有嵌套網格,因爲確認團組不是唯一的。

如何唯一標識每個嵌套網格的ValidationGroup?

謝謝。

UPDATE ValidationGroup標識符在將成員添加到第一個嵌套組而不是後續嵌套網格時起作用。看起來它仍然通過所有的嵌套網格,而不僅僅是你點擊的「添加」按鈕。

回答

0
//Access Validators and Buttons 
     RequiredFieldValidator RequiredFieldValidator1 = (RequiredFieldValidator)e.Row.FindControl("RequiredFieldValidator1"); 
     RequiredFieldValidator RequiredFieldValidator2 = (RequiredFieldValidator)e.Row.FindControl("RequiredFieldValidator2"); 
     RequiredFieldValidator RequiredFieldValidator3 = (RequiredFieldValidator)e.Row.FindControl("RequiredFieldValidator3"); 
     Button Button = (Button)e.Row.FindControl("Button1"); 

     //Assign validation group to controls. 
     RequiredFieldValidator1.ValidationGroup = "Gridview1" + e.Row.RowIndex.ToString(); 
     RequiredFieldValidator2.ValidationGroup = "Gridview1" + e.Row.RowIndex.ToString(); 
     RequiredFieldValidator3.ValidationGroup = "Gridview1" + e.Row.RowIndex.ToString(); 
     Button.ValidationGroup = "Gridview1" + e.Row.RowIndex.ToString(); 
相關問題