2010-03-17 4 views
1

1.Here у меня есть сетка в родительской сетке и есть кнопка ссылки внутри вложенной сетки.Проблема с вложенной сеткой telerik

2. Для кнопки ссылки мне нужно использовать командное событие элемента вложенной сетки или я могу использовать команду элемента родительской сетки.

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

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

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

Edit: вот пример кода

Public Sub grd_ItemCommand(ByVal source As Object, _ 
               ByVal e As nsTelerik.GridCommandEventArgs) _ 
               Handles grdCollClaimLevel.ItemCommand, grdCollLineLevel.ItemCommand, _ 
               grdCollLineValues.ItemCommand, grdCollPartLevel.ItemCommand, _ 
               grdPTNClaimLevel.ItemCommand, _ 
               grdPTNLineLevel.ItemCommand, grdPTNLineValues.ItemCommand 


     Dim uicCharMain As nsPTNWebContext.CharMainUIC 
     Dim uicCollDetl As nsPTNWebContext.CollDetlUIC 
     Dim uicPTNItem As nsPTNWebContext.PatternItemUIC 

     Try 

      Select Case e.CommandName 
       Case c_sBtnChar 

        uicCharMain = New nsPTNWebContext.CharMainUIC() 

        With uicCharMain 
         .CharID = CStr(e.CommandArgument) 
         .Busns_Event_Cd = m_uicRsltMatc.BusEvent 
         .PTN_LOB_Cd = m_uicRsltMatc.LOB 
         .UserID = m_uicRsltMatc.UserID 
         .ModePTN = m_uicRsltMatc.ModePattern 
         .ModeChar = m_uicRsltMatc.ModeChar 
         .ModeColl = m_uicRsltMatc.ModeColl 
         .ModeRept = m_uicRsltMatc.ModeRept 
         .PageMode = nsPTNWebContext.CharMainUIC.enPageMode.View 
         .TabMode = m_uicRsltMatc.TabMode 
        End With 

        Me.PageState.Save() 
        Me.Navigation.AddMe(c_sCharMain) 
        Me.Navigation.Transfer(uicCharMain) 

       Case c_sBtnColl 

        uicCollDetl = New nsPTNWebContext.CollDetlUIC(_ 
         CStr(e.CommandArgument), _ 
         m_uicRsltMatc.BusEvent, _ 
         m_uicRsltMatc.LOB) 

        With uicCollDetl 
         .UserID = m_uicRsltMatc.UserID 
         .ModeColl = m_uicRsltMatc.ModeColl 
         .PageMode = nsPTNWebContext.CollDetlUIC.enPageMode.View 

         .ModePTN = m_uicRsltMatc.ModePattern 
         .ModeChar = m_uicRsltMatc.ModeChar 
         .ModeRept = m_uicRsltMatc.ModeRept 
         .BusEvent = m_uicRsltMatc.BusEvent 
         .LOB = m_uicRsltMatc.LOB 
         .TabMode = m_uicRsltMatc.TabMode 
        End With 

        Me.PageState.Save() 
        Me.Navigation.AddMe(c_sCollDetails) 
        Me.Navigation.Transfer(uicCollDetl) 

       Case c_sBtnPattern 

        uicPTNItem = New nsPTNWebContext.PatternItemUIC(CStr(e.CommandArgument)) 

        With uicPTNItem 
         .BusEvent = m_uicRsltMatc.BusEvent 
         .LOB = m_uicRsltMatc.LOB 
         .UserID = m_uicRsltMatc.UserID 
         .ModeChar = m_uicRsltMatc.ModeChar 
         .ModeColl = m_uicRsltMatc.ModeColl 
         .ModePattern = m_uicRsltMatc.ModePattern 
         .ModeRept = m_uicRsltMatc.ModeRept 
         .CharID = m_uicRsltMatc.CharID 
         .CollID = m_uicRsltMatc.CollID 
         .PageMode = nsPTNWebContext.PatternItemUIC.enPageMode.View 
         .TabMode = m_uicRsltMatc.TabMode 
        End With 

        Me.PageState.Save() 
        Me.Navigation.AddMe(c_sPatternItem) 
        Me.Navigation.Transfer(uicPTNItem) 

      End Select 

     Finally 
      Cleanup(uicCharMain) 
      uicCharMain = Nothing 
      Cleanup(uicCollDetl) 
      uicCollDetl = Nothing 
      Cleanup(uicPTNItem) 
      uicPTNItem = Nothing 

     End Try 
    End Sub 

А вот разметка

 <tel:radgrid runat="server" id="grdPTNPartLevel" width="100%" autogeneratecolumns="false" 
      horizontalalign="Justify"> 
      <mastertableview width="100%"> 
       <NestedViewTemplate> 
        <tel:RadGrid runat="server" ID="grdPTNPartValues" Width="100%" AutoGenerateColumns="false" 
         HorizontalAlign="Justify" OnItemDataBound="grdPTNPartValues_ItemDataBound"> 
        </tel:RadGrid> 
        <tel:RadGrid runat="server" ID="grdPTNLineLevel" Width="100%" AutoGenerateColumns="false" 
         HorizontalAlign="Justify" OnItemDataBound="grdPTNLineLevel_ItemDataBound" OnItemCommand="grd_ItemCommand"> 
         <MasterTableView Width="100%"> 
          <NestedViewTemplate> 
           <tel:RadGrid runat="server" ID="grdPTNLineValues" Width="100%" AutoGenerateColumns="false" 
            HorizontalAlign="Justify" OnItemDataBound="grdPTNLineValues_ItemDataBound" OnItemCommand="grd_ItemCommand"> 
           </tel:RadGrid> 
          </NestedViewTemplate> 
         </MasterTableView> 
        </tel:RadGrid> 
       </NestedViewTemplate> 
      </mastertableview> 
     </tel:radgrid> 
+0

Некоторый код поможет проиллюстрировать проблему. Можете ли вы разместить разметку для всей сетки? – Aaron

+0

Спасибо, я только что разместил разметку – Jeff

+0

и этот образец http://demos.telerik.com/aspnet-ajax/grid/examples/dataediting/threelevel/defaultcs.aspx может быть полезным – dankyy1

ответ

0

Не видя некоторые из кода, я не могу быть совершенно уверен, о том, где эта проблема лежит. Первое, что я хотел бы попробовать, это нечто похожее на то, что telerik имеет в своем API here. Вам нужно будет убедиться, что вы работаете с надлежащим OwnerTable, прежде чем что-либо делать с элементом команды. Используя что-то вроде этого, определите, что элемент для правой таблицы, тогда у вас должен быть доступ к нему.

//identify to which table belongs the currently bound item 
     if (e.Item.OwnerTableView.Name == "MyUniqueTableName") 
     { 
     //process requested operations 
     } 

EDIT

Я понимаю, что вы пытаетесь сделать. Думаю, вы ошибетесь. Взгляните на раздел иерархии на telerik's demo page here. Это очень информативно, и у меня была 4-уровневая иерархия, работающая с некоторым кодом за несколько часов, и все с одним радгридом.

+0

Я слышал, я просто не знаю имеют гибкость для изменения большей части подхода к этому конкретному проекту – Jeff

0

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

protected void gvwData_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e) 
{ 
    if (e.Item.ItemType == GridItemType.NestedView) 
    { 
     GridDataItem item = e.Item as GridDataItem; 
     HtmlGenericControl InfoDvi= (HtmlGenericControl)e.Item.FindControl("DivWithServerSideTagName"); 
    } 
} 
Смежные вопросы