即使数据在控件中无效,Gridview更新事件也会触发

时间:2011-08-16 07:31:18

标签: c# asp.net gridview

我有一个命令字段和几个模板字段。模板字段附有验证器,并在选择错误数据时显示正确的消息。但是,当我单击commandfield时,没有显示错误,即使数据无效,事件也会触发。 Morover,我还检查了服务器上的Page.IsValid,即使数据处于无效状态,一切正常。这个标记:

<asp:TemplateField HeaderText="Exp. Date">
    <ItemTemplate>
        <asp:Label ID="lblExpiration" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Expiration")%>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate  >
        <asp:DropDownList ID="ddlMM" runat="server" ValidationGroup="vgExpDateGrid">
            <asp:ListItem Value="-1">MM</asp:ListItem>
            <asp:ListItem Value="1" >01</asp:ListItem>
            <asp:ListItem Value="2">02</asp:ListItem>
            <asp:ListItem Value="3">03</asp:ListItem>
            <asp:ListItem Value="4">04</asp:ListItem>
            <asp:ListItem Value="5">05</asp:ListItem>
            <asp:ListItem Value="6">06</asp:ListItem>
            <asp:ListItem Value="7">07</asp:ListItem>
            <asp:ListItem Value="8">08</asp:ListItem>
            <asp:ListItem Value="9">09</asp:ListItem>
            <asp:ListItem Value="10">10</asp:ListItem>
            <asp:ListItem Value="11">11</asp:ListItem>
            <asp:ListItem Value="12">12</asp:ListItem>
        </asp:DropDownList>
        <span class="green"></span> /&nbsp;
        <asp:DropDownList ID="ddlYY" runat="server" ValidationGroup="vgExpDateGrid">
        </asp:DropDownList>
        <span class="green"></span>
         <asp:RequiredFieldValidator ID="rfvddlMM" ControlToValidate="ddlMM" Display="Dynamic" InitialValue="-1" runat="server" ValidationGroup="vgExpDateGrid">*</asp:RequiredFieldValidator>
         <asp:RequiredFieldValidator ID="rfvddlYY" ControlToValidate="ddlYY" Display="Dynamic" InitialValue="-1" runat="server" ValidationGroup="vgExpDateGrid">*</asp:RequiredFieldValidator>
    </EditItemTemplate>
</asp:TemplateField>

<asp:CommandField 
 UpdateText="Update" CausesValidation="true"
    HeaderText="Update" ShowEditButton="true" 
    EditText="Update <br/>Exp. Date" ButtonType="Link" />

请不要注意奇怪的控件名称和样式。基本上,模板字段具有年和月的下拉列表。 Year的下拉列表填充在rowdatabound事件中。正如您所看到的那样,验证器仍然可以正常工作。谁能告诉我可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

乍一看,我会说ValidationGroup="vgExpDateGrid"上没有asp:CommandField。将命令字段更改为:

<asp:CommandField ValidationGroup="vgExpDateGrid"
 UpdateText="Update" CausesValidation="true"
  HeaderText="Update" ShowEditButton="true" 
  EditText="Update <br/>Exp. Date" ButtonType="Link" />

或者从ValidationGroup

中删除asp:RequiredFieldValidator