簡體   English   中英

嵌套 Gridview 頁腳文本框必需字段驗證觸發嵌套 Gridview 頁腳按鈕上的每一行單擊

[英]Nested Gridview Footer Textbox Required Field Validation Firing for Each Row on Nested Gridview Footer Button Click

我試圖讓所需的字段驗證僅在單擊添加按鈕時針對特定行觸發。 但是現在,當我單擊任何添加按鈕時,它會觸發所有嵌套網格行的必需字段驗證。 嵌套 gridview 的代碼和 gridviews 的圖像如下。 我還嘗試使用驗證組,嘗試為每個嵌套的 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>

對於每一行的驗證控件,您要添加 ValidationGroup='<%# "PC" + Eval("ContractProjectCodeID") %>'。 正如您所說,驗證觸發了錯誤的行,可能是 ContractProjectCodeID 對於每一行可能不是唯一的。 我認為您可以做的是將行索引添加到驗證組

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM