Фильтр Obout Grid разрывается после обратной передачи

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

1 ответ

Решение

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

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

Другие вопросы по тегам