C# gridview中的按钮在不应该触发所有验证器时触发所有验证器
让我首先说我知道如何使用CausesValidation和ValidationGroup。我有一个奇怪的情况,我有一个Ajax选项卡容器。每个选项卡都有一个gridview,在gridview中生成的行都有一个包含“添加”按钮的TemplateField。gridview和选项卡容器中的按钮都使用ValidationGroup来防止任何交叉污染,并且所有“添加”按钮都设置为CausesValidation=false 我刚刚添加了最后一个gridview,“添加”按钮会触发页面上的所有验证器。“添加”按钮再次设置为CausesValidation=false,因此没有理由以这种方式运行。我甚至在前端和后面的代码中设置了这个值 对于尝试,我尝试了这些链接中的建议:和 还有其他人遇到过这个问题并找到了解决方案吗 编辑代码请求: 我将只发布有问题的选项卡面板,因为整个容器几乎有500行C# gridview中的按钮在不应该触发所有验证器时触发所有验证器,c#,asp.net,gridview,validation,C#,Asp.net,Gridview,Validation,让我首先说我知道如何使用CausesValidation和ValidationGroup。我有一个奇怪的情况,我有一个Ajax选项卡容器。每个选项卡都有一个gridview,在gridview中生成的行都有一个包含“添加”按钮的TemplateField。gridview和选项卡容器中的按钮都使用ValidationGroup来防止任何交叉污染,并且所有“添加”按钮都设置为CausesValidation=false 我刚刚添加了最后一个gridview,“添加”按钮会触发页面上的所有验证器。“
<asp:TabPanel ID="tab_Browse" runat="server" HeaderText="Browse">
<ContentTemplate>
<table id="browseTable">
<tr>
<td>Category</td>
<td>
<asp:DropDownList ID="browseDDL" runat="server" AppendDataBoundItems="True">
<asp:ListItem Text="All categories" Value="999"></asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:Button ID="btnBrowse" runat="server" Text="Browse" ValidationGroup="vgBrowse" OnClick="btnBrowse_Click" />
</td>
</tr>
</table>
<asp:GridView ID="gvBrowse" runat="server" AutoGenerateColumns="false" AllowPaging="true" PageSize="8"
OnPageIndexChanging="gvBrowse_PageIndexChanging" DataKeyNames="foodId"
OnRowDataBound="gvBrowse_RowDataBound" Width="790px">
<Columns>
<asp:TemplateField HeaderText="Food ID" Visible="false">
<ItemTemplate>
<%# Eval("foodId") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Description">
<ItemTemplate>
<%# Eval("Shrt_Desc") %> (100g)
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Calories" ItemStyle-Width="50px">
<ItemTemplate>
<%# Eval("cals") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Fat Grams" ItemStyle-Width="75px">
<ItemTemplate>
<%# Eval("fat") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Carbs" ItemStyle-Width="50px">
<ItemTemplate>
<%# Eval("carbs") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="110px">
<ItemTemplate>
<asp:Button ID="browseAdd" runat="server" CausesValidation="false" Text="Add to meal" CommandArgument="Standard" OnClick="showingEntry" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<RowStyle CssClass="gvRowStyle" />
<HeaderStyle CssClass="gvHeader" />
<AlternatingRowStyle CssClass="altRow" />
</asp:GridView>
</ContentTemplate>
</asp:TabPanel>
编辑2另一个有趣的小道消息。如果我在添加按钮上放置OnClientClick=alertPage\u是有效的,那么即使触发了其他选项卡中的验证程序,它也会返回true。如果我第二次单击按钮,它将返回false,并且我的codebehind将失败,就好像页面已发回但跳过了OnDataBound方法一样我最终通过使用空行预加载gridview来解决此问题。这对解决问题的原因没有任何意义,但它确实解决了问题。请发布您的代码以便更好地理解。请发布您的代码并使用此代码段不够的链接。