C# Gridview';s更新事件触发,即使控件中的数据无效
我有一个commandfield和几个templatefield。templatefields附带了验证器,当选择了错误的数据时,它们会显示正确的消息。但是,当我单击commandfield时,不会显示错误,即使数据无效,也会触发事件。此外,我还检查了服务器上的Page.IsValid,即使数据处于无效状态,所有结果都很好。这将更改标记:C# Gridview';s更新事件触发,即使控件中的数据无效,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个commandfield和几个templatefield。templatefields附带了验证器,当选择了错误的数据时,它们会显示正确的消息。但是,当我单击commandfield时,不会显示错误,即使数据无效,也会触发事件。此外,我还检查了服务器上的Page.IsValid,即使数据处于无效状态,所有结果都很好。这将更改标记: <asp:TemplateField HeaderText="Exp. Date"> <ItemTemplate>
<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> /
<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" />
嗯
01
02
03
04
05
06
07
08
09
10
11
12
/
*
*
请不要注意奇怪的控件名称和样式。基本上,模板字段有年份和月份的下拉列表。年度下拉列表填充在rowdatabound事件中。正如您所看到的,附加了验证程序的commandfield仍然正常工作。有人能告诉我问题出在哪里吗?乍一看,我想说您没有
asp:CommandField
上的ValidationGroup=“vgExpDateGrid”
。将commandfield更改为:
<asp:CommandField ValidationGroup="vgExpDateGrid"
UpdateText="Update" CausesValidation="true"
HeaderText="Update" ShowEditButton="true"
EditText="Update <br/>Exp. Date" ButtonType="Link" />
或者从asp:RequiredFieldValidator