2012-01-09 90 views
2

简单的问题?我有一个在页脚插入行的gridview,我有验证控制该行和edittemplate如何让它只验证该行,因为当我做一个编辑它也验证插入行。我只是想验证插入行或编辑行。验证GridView中的编辑行和插入行

<asp:GridView ID="PageSettings" runat="server" 
    AllowPaging="True" AllowSorting="True" 
    AutoGenerateColumns="False" 
    AutoGenerateDeleteButton="True" 
    AutoGenerateEditButton="True" 
    DataKeyNames="Id" 
    DataSourceID="ObjectDataSourcePages" 
    OnLoad="PageSettings_Load"   
    OnRowDataBound="PageSettings_DataBound" 
    OnRowCommand="PageSettings_RowCommand" 
    OnRowCreated="PageSettings_RowCreated" 
    OnRowEditing="PageSettings_RowEditing" 
    OnRowCancelingEdit="PageSettings_RowCancelingEdit" 
    OnRowUpdating="PageSettings_RowUpdating"  
    OnPageIndexChanging="PageSettings_PageIndexChanging" 
    OnSorting="PageSettings_Sorting" 
    OnSorted="PageSetting_Sorted"  
    PageSize="2" 
    ShowFooter="True" 
    ShowHeaderWhenEmpty="True"> 
    <Columns> 
     <asp:TemplateField HeaderText="Page Name" HeaderStyle-HorizontalAlign="Left" SortExpression="Name"> 
      <ItemTemplate> 
       <%# Eval("Name") %> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:TextBox ID="Name" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox> 
       <asp:RequiredFieldValidator ID="valRequireName" runat="server" 
        ControlToValidate="Name" 
        CssClass="gridview-error"  
        Display="Dynamic" 
        SetFocusOnError="true">*</asp:RequiredFieldValidator>  
      </EditItemTemplate> 
      <FooterTemplate> 
       <asp:TextBox ID="InsertName" runat="server"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="valRequireInsertName" runat="server" 
        ControlToValidate="InsertName" 
        Display="Dynamic" 
        SetFocusOnError="true">*</asp:RequiredFieldValidator> 
      </FooterTemplate>    
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Path" HeaderStyle-HorizontalAlign="Left" SortExpression="Path"> 
      <ItemTemplate> 
       <%# Eval("Path") %> 
      </ItemTemplate> 
      <EditItemTemplate>      
       <asp:TextBox ID="Path" runat="server" Text='<%# Bind("Path") %>'></asp:TextBox> 
       <asp:RequiredFieldValidator ID="valRequirePath" runat="server" 
        ControlToValidate="Path" 
        Display="Dynamic" 
        SetFocusOnError="true">*</asp:RequiredFieldValidator>  
      </EditItemTemplate> 
      <FooterTemplate> 
       <asp:TextBox ID="InsertPath" runat="server"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="valRequireInsertPath" runat="server" 
        ControlToValidate="InsertPath" 
        Display="Dynamic" 
        SetFocusOnError="true">*</asp:RequiredFieldValidator> 
      </FooterTemplate>    
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Route Value" HeaderStyle-HorizontalAlign="Left" SortExpression="RouteValue"> 
      <ItemTemplate> 
       <%# Eval("RouteValue") %> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:TextBox ID="RouteValue" runat="server" Text='<%# Bind("RouteValue") %>'></asp:TextBox> 
      </EditItemTemplate> 
      <FooterTemplate> 
       <asp:TextBox ID="InsertRouteValue" runat="server"></asp:TextBox> 
      </FooterTemplate>    
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="RegExp" HeaderStyle-HorizontalAlign="Left" SortExpression="RegExp"> 
      <ItemTemplate> 
       <%# Eval("RegExp") %> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:TextBox ID="RegExp" runat="server" Text='<%# Bind("RegExp") %>'></asp:TextBox> 
      </EditItemTemplate> 
      <FooterTemplate> 
       <asp:TextBox ID="InsertRegExp" runat="server"></asp:TextBox> 
      </FooterTemplate>    
     </asp:TemplateField> 
    </Columns>     
</asp:GridView> 

回答

2

可以使用

验证组

定义一个单独的组用于每个操作

SaveRecords

个&

EditRecords

。必须在保存/编辑按钮&上指定每个验证组,以便为​​该事件触发它们。 MSDN

0

很长一段时间后 ,但你必须在页脚的RequiredFieldValidator的ValidationGroup一个一个独特的名字添加和添加此来的ValidationGroup添加按钮