【问题标题】:Nested Gridview Footer Textbox Required Field Validation Firing for Each Row on Nested Gridview Footer Button Click嵌套 Gridview 页脚文本框必填字段验证触发嵌套 Gridview 页脚按钮上的每一行单击
【发布时间】:2021-03-27 13:54:35
【问题描述】:

我试图在单击添加按钮时仅针对特定行触发所需的字段验证。但是现在,当我单击任何添加按钮时,它会触发所有嵌套网格行的必需字段验证。嵌套网格视图和网格视图图像的代码如下。我还尝试使用验证组,尝试为每个嵌套的 gridview 行获取唯一的验证组,但无法正常工作。

<asp:GridView ID="GrdXML" runat="server" AllowSorting="false"
    AutoGenerateColumns="False" CellPadding="0"
    ForeColor="#333333" GridLines="Horizontal" onrowdeleting="GrdXML_RowDeleting" OnRowDataBound="OnRowDataBound"
    ShowFooter="false" CssClass="xmlgrid" OnSorting="GrdXML_Sorting" DataKeyNames="ContractRecordID">
    <Columns>
        <asp:TemplateField HeaderText="Contract Start Date" SortExpression="ContractStartDate">
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("ContractStartDate") %>'></asp:Label>
            </ItemTemplate>
            <ItemStyle Width="30%" />
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Contract End Date" SortExpression="ContractEndDate">
            <ItemTemplate>
                <asp:Label ID="Label3" runat="server" Text='<%# Bind("ContractEndDate") %>'></asp:Label>
            </ItemTemplate>
            <ItemStyle Width="50%" />
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Button ID="BtnDelete" runat="server" 
                    CommandArgument='<%# Eval("ContractRecordID") %>' CommandName="Delete" 
                    onclick="BtnDelete_Click" Text="Delete" Width="60px" />
                <ajaxToolkit:ConfirmButtonExtender ID="BtnDelete_ConfirmButtonExtender" 
                    runat="server" ConfirmText="Are you sure you want to Delete?" Enabled="True" 
                    TargetControlID="BtnDelete">
                </ajaxToolkit:ConfirmButtonExtender>
            </ItemTemplate>
            <ItemStyle Width="40px" />
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Literal runat="server" ID="lit1" Text="<tr id='trGrid'><td colspan='100%'>" />
                <asp:GridView ID="projectCodeGridView" runat="server" AllowSorting="false" CellPadding="4" ForeColor="#333333" GridLines="Horizontal" AutoGenerateColumns="false" ShowFooter="true" OnRowCommand="ProjectCodeGridView_RowCommand" OnRowCreated="ProjectCodeGridView_RowCreated" OnRowDataBound="ProjectCodeGridView_RowDataBound" OnRowDeleting="ProjectCodeGridView_RowDeleting" DataKeyNames="ContractProjectCodeID" BorderStyle="None" BorderWidth="0">
                    <Columns>
                        <asp:TemplateField HeaderText="Project Codes" SortExpression="ContractProjectCode" HeaderStyle-HorizontalAlign="Left">
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Bind("ContractProjectCode") %>' CssClass="projectcodelabel"></asp:Label>
                            </ItemTemplate>
                            <ItemStyle Width="100%" />
                            <FooterTemplate>
                                <asp:TextBox ID="projectCodeTextBox" runat="server" ValidationGroup='<%# "PC" + Eval("ContractProjectCodeID") %>'></asp:TextBox>
                                <asp:RequiredFieldValidator ID="projectCodeRequiredFieldValidator" runat="server" 
            ControlToValidate="projectCodeTextBox" ErrorMessage="Project Code Required" ForeColor="Red" Display="Static" ValidationGroup='<%# "PC" + Eval("ContractProjectCodeID") %>' Enabled="false"></asp:RequiredFieldValidator>
                            </FooterTemplate>
                            <FooterStyle Width="100%" />
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:Button ID="BtnDelete1" runat="server" 
                    CommandArgument='<%# Eval("ContractProjectCodeID") %>' CommandName="Delete" 
                    onclick="BtnDelete1_Click" Text="Delete" Width="60px" />
                <ajaxToolkit:ConfirmButtonExtender ID="BtnDelete1_ConfirmButtonExtender" 
                    runat="server" ConfirmText="Are you sure you want to Delete?" Enabled="True" 
                    TargetControlID="BtnDelete1">
                </ajaxToolkit:ConfirmButtonExtender>
                            </ItemTemplate>
                            <FooterTemplate>
                                <asp:Button ID="BtnAdd" runat="server" onclick="BtnAdd_Click" Text="Add" Width="60px" ValidationGroup='<%# "PC" + Eval("ContractProjectCodeID") %>' CommandName="Add" />
                            </FooterTemplate>
                            <FooterStyle Width="100%" />
                        </asp:TemplateField>
                    </Columns>
                    <HeaderStyle BackColor="#F7F6F3" Font-Bold="True" />
                </asp:GridView>
                <asp:Literal runat="server" ID="lit2" Text="</td></tr>" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
    <EditRowStyle BackColor="#999999" />
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="Black" CssClass="padding" />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" HorizontalAlign="Center" CssClass="padding" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <SortedAscendingHeaderStyle BackColor="#506C8C" />
    <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>

【问题讨论】:

  • 每行的 ContractProjectCodeID 是否唯一?
  • 这为我指明了正确的方向。谢谢!如果您发布答案,我可以将其标记为已接受的答案。 @KiranHegde

标签: c# asp.net


【解决方案1】:

对于每一行的验证控件,您要添加 ValidationGroup=''。正如您所说,验证触发了错误的行,可能是每行的 ContractProjectCodeID 可能不是唯一的。我认为您可以做的是将行索引添加到验证组

ValidationGroup='<%# "PC" + Container.DataItemIndex + Eval("ContractProjectCodeID") 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    相关资源
    最近更新 更多