ASP.NET 3.5 UpdatePanel с контролем валидации. Проверка выполняется неожиданно - PullRequest
0 голосов
/ 04 февраля 2010

У меня есть сайт ASP.NET 3.5 sp1, и на одной странице у меня есть две панели обновления. У первого есть CustomValidator, а у второго нет. Я хочу, чтобы проверка запускалась ТОЛЬКО при нажатии кнопки. В итоге, когда Gridview во второй панели обновлений редактируется, это также вызывает проверку. Я много читал о том, как испортились элементы управления валидацией в 2.0, но я почти уверен, что здесь не проблема (или нет?)

Вот соответствующий раздел страницы ...

<asp:UpdatePanel ID="userInput" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
    <Triggers>
        <asp:PostBackTrigger ControlID="btnSubmit" />
    </Triggers>
    <ContentTemplate>
        <asp:TextBox ID="txtMCCredits" runat="server" Width="28px"></asp:TextBox>
        <asp:CustomValidator ID="UserValidator" runat="server" ErrorMessage="*" OnServerValidate="UserValidator_ServerValidate" />
    </ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
<asp:UpdatePanel ID="upData" runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="gvMainproCredits" />
    </Triggers>
    <ContentTemplate>
        <asp:GridView ID="gvMainproCredits" runat="server" AllowPaging="True" AllowSorting="True"
            AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333"
            GridLines="None" DataKeyNames="RecordID">
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <Columns>
                <!--SNIP-->
                <asp:BoundField DataField="RecordID" HeaderText="RecordID" InsertVisible="False"
                    ReadOnly="True" SortExpression="RecordID" Visible="false" />
                <asp:BoundField DataField="DateAdded" HeaderText="DateAdded" SortExpression="DateAdded" />
                <asp:CommandField ShowHeader="true" HeaderText="Edit" ShowEditButton="true" />
            </Columns>
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <EditRowStyle BackColor="#999999" />
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

Ответы [ 2 ]

4 голосов
/ 04 февраля 2010

Возможно, вы захотите разделить проверки, используя ValidationGroup .

Таким образом, вы можете выбрать, чтобы кнопка проверяла только определенные элементы управления в той же группе.

1 голос
/ 04 февраля 2010

Только часть решения, но здесь - это ссылка, как вручную вызывать проверку на стороне клиента в javascript.

проще: Page_ClientValidate ( 'Group1');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...