Фильтр Grid ломается после обратной передачи

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

Я пробовал сетку как с UpdatePanel, так и без нее, и вызывал обновления при переключении контекста, но поведение не изменилось.

Есть ли причина, по которой раскрывающийся список потеряет свои параметры или что средство выбора даты потеряет связь с текстовыми полями?

Пользовательский фильтр даты:

<obout:GridTemplate ID="templateDateIssuedFilter" runat="server">
  <Template>
    <table>
      <tr>
        <td>
          <asp:Literal ID="litDateIssuedFrom" runat="server" Text="From" />
        </td>
        <td>
          <obout:OboutTextBox ID="txtDateIssuedFrom" runat="server" Width="180px">
            <ClientSideEvents OnKeyUp="applyFilter" />
          </obout:OboutTextBox>
          <obout:Calendar runat="server" DatePickerMode="true" TextBoxId="txtDateIssuedFrom" OnClientDateChanged="applyFilter" DatePickerImagePath="OboutControls/Calendar/styles/date_picker1.gif" />
        </td>
      </tr>
      <tr>
        <td>
          <asp:Literal ID="litDateIssuedTo" runat="server" Text="To" />
        </td>
        <td>
          <obout:OboutTextBox ID="txtDateIssuedTo" runat="server" Width="180px">
            <ClientSideEvents OnKeyUp="applyFilter" />
          </obout:OboutTextBox>
          <obout:Calendar runat="server" DatePickerMode="true" TextBoxId="txtDateIssuedTo" OnClientDateChanged="applyFilter" DatePickerImagePath="OboutControls/Calendar/styles/date_picker1.gif" />
        </td>
      </tr>
    </table>
  </Template>
</obout:GridTemplate>

person Evan Frisch    schedule 12.11.2014    source источник


Ответы (1)


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

Для выпадающего списка мне также пришлось повторно добавлять все параметры при каждой обратной передаче.

person Evan Frisch    schedule 14.11.2014