2016-07-20 6 views
0

Я пытаюсь получить ClientID для элемента управления RadGrid с клиентской стороны с помощью JavaScript, чтобы я мог привязывать данные к нему со стороны клиента ,Поиск идентификатора клиента для RadGrid внутри тега RadLightBoxItem в RadLightBox

RadGrid присутствует в RadLightBox и должен быть заполнен событием нажатия кнопки. Разметка для LightBox выглядит примерно так.

<telerik:RadLightBox ID="RadLightBox1" runat="server"> 
    <Items> 
     <telerik:RadLightBoxItem runat="server"> 
      <ItemTemplate> 
       <telerik:RadGrid runat="server" ID="lightbox_radgrid" AutoGenerateColumns="false"> 
        <MasterTableView> 
         <Columns> 
          <%-- Columns not shown here --%> 
         </Columns> 
        </MasterTableView> 
        <ClientSettings> 
         <ClientEvents OnCommand="window_radgrid_OnCommand" /> 
        </ClientSettings> 
        <GroupingSettings CaseSensitive="false" ShowUnGroupButton="true" /> 
       </telerik:RadGrid> 
      </ItemTemplate> 
     </telerik:RadLightBoxItem> 
    </Items> 
</telerik:RadLightBox> 

Это частичный код Javascript, который я написал. Я могу найти элемент RadLIghtBoxItem, но не могу получить RadGrid и его clientID. Этот метод должен быть выполнен при успешном вызове веб-службы для возврата данных.

function onSucessCallThis(result, userContext, methodName) { 
      var radWindow = $find('<%= lightbox.ClientID %>'); 
      var LightBoxItems = radWindow.get_items(); 
      console.log(LightBoxItems); 
      console.log(LightBoxItems.get_count()); 
      var item = LightBoxItems.getItem(0); 
      console.log(item); //Able to fetch LightBoxItem 
      var radGrid = item.FindControl("lightbox_radgrid"); //Doesn't work 
     } 

Я не уверен, что это правильный способ иметь radGrid внутри radLightBox. Существует мало примеров этого онлайн.

ответ

0

Я думаю, вам будет проще использовать RadWindow's ContentTemplate. Что-то вроде:

 <telerik:RadWindow ID="RadWindow1" runat="server" Modal="true"> 
      <ContentTemplate> 
       <telerik:RadGrid ID="RadGrid1" runat="server"></telerik:RadGrid> 
      </ContentTemplate> 
     </telerik:RadWindow> 
     <script> 
      function onSucessCallThis(result, userContext, methodName) { 
       var wnd = $find("<%=RadWindow1.ClientID%>"); 
       if (!wnd.isVisible()) { 
        wnd.show(); 
       } 
       var grid = $find("<%=RadGrid1.ClientID%>"); 
       var mtv = grid.get_masterTableView(); 
       mtv.set_dataSource(result); 
       mtv.dataBind(); 
      } 
     </script> 

Если вы хотите сохранить с помощью осветителя, просмотрите Get Client-side Reference to a Control Object статью. Суть в том, что вы можете легко проехать через DOM, например:

 <telerik:RadLightBox ID="RadLightBox1" runat="server"> 
      <Items> 
       <telerik:RadLightBoxItem runat="server"> 
        <ItemTemplate> 
         <telerik:RadGrid CssClass="gridInLightbox" runat="server" ID="lightbox_radgrid" AutoGenerateColumns="false"> 

         </telerik:RadGrid> 
        </ItemTemplate> 
       </telerik:RadLightBoxItem> 
      </Items> 
     </telerik:RadLightBox> 
     <script> 
      function onSucessCallThis(result, userContext, methodName) { 
       var lightbox = $find('<%= RadLightBox1.ClientID %>'); 

       //item objects do not refer the DOM so we can use the lightbox as a parent for the traversal 
       var radGrid = $telerik.$(".gridInLightbox", lightbox.get_element())[0].control;//of course, add defensive checks 
       alert(radGrid); 
       var mtv = radGrid.get_masterTableView(); 
       mtv.set_dataSource(result); 
       mtv.dataBind(); 
      } 
     </script> 

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

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