ASP.NET updatepanel обновляет всю страницу, если AutoPostBack не запускается один раз? - PullRequest
0 голосов
/ 27 июня 2019

Я оказался в странной ситуации.Я использую панель обновления, которая содержит сетку для отображения результатов базы данных.У меня есть форма с несколькими фильтрами внутри панели обновления.Пользователь должен иметь возможность применять любые фильтры, которые он хочет, а затем обновить результаты с помощью кнопки обновления.

Как я понял, это обновляет всю страницу.Однако, если я установлю AutoPostBack="true" в раскрывающемся списке, все немного изменится:

  • Я выберу значение из раскрывающегося списка
  • Подождите секунду, и страница завершит обратную передачу, в котором результаты фактически не обновляются, а выпадающий список сбрасывает себя
  • Теперь я могу использовать форму, и она работает правильно
  • Если я заполняю текстовое поле или нажимаю кнопку обновить доразрешив автоматическую обратную передачу, форма продолжит обновлять страницу

Меня очень смущает это поведение.Это основы моего шаблона кода

<asp:UpdatePanel id="GridUpdatepanel" runat="server">
<ContentTemplate>
    <form>
        <div class="row">
            <div class="col-md-8">
                <h5 class="align-middle" >Filters</h5>
            </div>
            <div class="col-md-4">
                <div class="pull-right">
                    <asp:button Text="Update" id="UpdateButton" OnClick="UpdateButton_Click" runat="server" CssClass="btn btn-primary btn-sm"/>
                    <asp:button Text="Reset" id="resetButton" OnClick="ResetButton_Click" runat="server" CssClass="btn btn-danger btn-sm"/>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="input-group input-group-sm col-md-4">
                <asp:DropDownList runat="server" id="activeFilter" CssClass="form-control"  AutoPostBack="false" >
                <asp:ListItem selected="True" value="">-- Filter By Active/Inactive --</asp:ListItem>
                <asp:ListItem value="NULL">Active</asp:ListItem>
                <asp:ListItem value="NOT NULL">Inactive</asp:ListItem>
                </asp:DropDownList>
            </div>
            <div class="input-group input-group-sm col-md-4">
                <asp:TextBox id="jobIdFilter" CssClass="form-control" runat="server" placeholder="-- Filter By Job ID --" />
            </div>
        </div>
    </form>
    <asp:GridView>
    <!-- display data in table etc -->
    </asp:Gridview>
</ContentTemplate>
</asp:UpdatePanel>
public void UpdateButton_Click(Object sender, EventArgs e)
{
    LoadGridView();
    //LoadGridView() then takes the values from the form fields, modifies 
    //the SQL string and updates the table with the results
} 

Последнее, что следует отметить, - этот код дублирован на трех разных страницах, помещенных в контейнер и перемещаемых с помощью навигационных вкладок.Я не уверен, что, может быть, они мешают друг другу, но первая вкладка работает нормально, а две другие - нет.

Спасибо за любую помощь, которую вы можете оказать.

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