2010-03-17 6 views
1

1. 부모 그리드 내에 격자가 있고 중첩 된 격자 안에 링크 버튼이 있습니다.중첩 된 격자 문제

2. 중첩 된 표의 항목 명령 이벤트를 사용해야하거나 상위 표의 항목 명령을 사용할 수 있습니다.

3. 문제는 내가 중첩 된 격자 내에서 링크 버튼을 클릭 한 다음 아이템 명령 이벤트가 상위 격자의 경우 Nestedgrid.But에 대해 해고되지 않습니다.

4. 핸들러와 아이템 제작 이벤트도 시도했는데, 코드에서 핸들러를 사용하거나 aspx에서 처리기를 사용했습니다. 그러나 중첩 된 그리드에 대한 아이템 명령 이벤트 히트를 얻는 데 도움이되지 않았습니다.

5. 이전에는 리피터의 경우 모든 그리드를 처리하는 하나의 항목 명령이있었습니다. 나는 아이와 부모를 위해 다른 항목 명령 이벤트를 시도했지만 또한 작동하지 않았다.

편집 : 여기에 코드 샘플을

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 
     } 

편집

난 당신이 뭘 하려는지를 참조하십시오. 나는 네가 잘못 생각한 것 같아. telerik의 demo page here에 대한 계층 구조 섹션을 살펴보십시오. 매우 유익한 정보 였고 몇 시간 만에 몇 가지 코드를 완성한 4 티어 계층 구조를 가지고 있었고 모두 단 1 개의 래드 그리드 만 가지고있었습니다.

+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"); 
    } 
}