2016-05-26 8 views
0

Я вношу некоторые изменения во внутреннее приложение, которое имеет компонент Telerik RadGrid на одной странице .aspx.asp: UpdatePanel для отдельных строк RadGrid

Каждая строка в RadGrid представляет заказ, и есть выпадающее меню, которое позволяет установить статус заказа. Изменение статуса заказа обновляет пару других свойств порядка, которые отображаются в этой строке.

До сих пор изменение статуса заказа привело к полному сообщению страницы и повторной визуализации. Я хочу изменить это на частичную запись с помощью UpdatePanel. Я мог бы обернуть раскрывающееся меню статуса (RadCombo) в UpdatePanel, которое позаботится о фактических изменениях базы данных, которые требуются (в соответствии с примером кода ниже), но затем без обновления других свойств в строке RadGrid обновления не будут представленный пользователю.

<telerik:RadGrid ID="OrdersGrid" runat="server" ...> 
    <MasterTableView DataKeyNames="OrderId" AllowMultiColumnSorting="false"> 
     <NoRecordsTemplate ...></NoRecordsTemplate> 
     <Columns> 
      <telerik:GridBoundColumn ... /> 
      ... 
      <telerik:GridTemplateColumn HeaderText="Order Status" UniqueName="OrderStatus"> 
       <ItemTemplate> 
        <asp:UpdatePanel runat="server"> 
         <ContentTemplate> 
          <telerik:RadComboBox ID="RadOrderStatus" DataSourceID="OrderStatusDataSource" runat="server" 
           SelectedValue='<%# Bind("OrderStatus") %>' Skin="Metro" Width="180px" DataTextField="OrderStatus" 
           DataValueField="OrderStatus" AutoPostBack="True" EnableLoadOnDemand="False" OnSelectedIndexChanged="RadOrderStatus_SelectedIndexChanged"> 
          </telerik:RadComboBox> 
         </ContentTemplate> 
        </asp:UpdatePanel> 
       </ItemTemplate> 
      </telerik:GridTemplateColumn> 
     </Columns> 
     <SortExpressions>...</SortExpressions> 
    </MasterTableView> 
</telerik:RadGrid> 

мне интересно, как я могу использовать UpdatePanel эффективно обернуть строку RadGrid так, чтобы вся строка может быть обновлена, а не просто клетка, что раскрывающийся. Я пробовал экспериментировать уже с размещением тегов, но я новичок в Telerik и поэтому не очень понял.

На каком уровне в разметке я могу поместить UpdatePanel, чтобы заставить это работать так, как хотелось бы?

Или есть способ Telerik сделать это?

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

ответ

1

Вы не можете разместить UpdatePanel вокруг каждой строки. Для начала нет никаких предустановок (вы не можете сделать это со стандартным GridView). Затем, если вам удастся это сделать (например, переопределить событие Render), вы получите недопустимую разметку, потому что у вас не может быть <div> элементов внутри <table> и между другими <tr> узлами.

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

Что вы можете сделать, это следующее:

  • обернуть всю сетку. Я бы использовал RadAjaxPanel и RadAjaxLoadingPanel, чтобы у вас был довольно загруженный индикатор. Что-то вроде:

    <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="Black"></telerik:RadAjaxLoadingPanel> 
        <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="RadAjaxLoadingPanel1"> 
         <telerik:RadGrid ID="RadGrid1" runat="server"></telerik:RadGrid> 
        </telerik:RadAjaxPanel> 
    
  • ИЛИ, используйте код на стороне клиента и jQuery. Комбо может вызвать WebService или PageMethod, который вернет данные, и вы можете использовать jQuery для перемещения DOM и обновления других элементов (текстовые поля, выпадающие списки, все, что у вас есть). Это будет сложнее.

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^