This is a migrated thread and some comments may be shown as answers.

[Solved] How to expand 1 of 2 detail table views?

4 Answers 130 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Wyatt
Top achievements
Rank 1
Wyatt asked on 18 Dec 2009, 12:44 AM
I have a master table view with 2 detail table views under it.  I have a context menu that can expand both detail table views.  How does one expand only one of the detail table views?

4 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 18 Dec 2009, 09:30 AM
Hi,

Try the code snippet below to set the first nested table in expanded mode. You can change the NestedTableViews and GridNestedViewItem  index to 1 to set the second detail table in expanded mode

C#
GridNestedViewItem firstLevelNestedViewItem = (GridNestedViewItem)RadGrid1.MasterTableView.GetItems(GridItemType.NestedView)[0];  
GridItem itemToExpand = firstLevelNestedViewItem.NestedTableViews[0].GetItems(GridItemType.Item)[0];  
itemToExpand.Expanded = true


Thanks,
Princy
0
Wyatt
Top achievements
Rank 1
answered on 29 Dec 2009, 04:53 PM
Thanks for your quick response!  firstLevelNestedViewItem.NestedTableViews(0).GetItems(GridItemType.Item) returns an empty array.  Furthermore, the code you provided finds a GridItem and sets Expanded = True, which I was already doing.  My problem is that when one sets Expanded = True, both DetailTables are made visible.  I only want to show one of the DetailTables at a time.
0
Shinu
Top achievements
Rank 2
answered on 30 Dec 2009, 07:15 AM
Hello Wyatt,

Here's an example that I implemented for a similar kind of scenario. Check it out:
aspx:
<input type="hidden" id="radGridClickedRowIndex" name="radGridClickedRowIndex" />  
 
<telerik:RadContextMenu ID="RadMenu1" runat="server"  
        onitemclick="RadMenu1_ItemClick"
   <Items> 
       <telerik:RadMenuItem Text="Expand/Collapse First Child" /> 
       <telerik:RadMenuItem Text="xpand/Collapse Second Child" />        
   </Items> 
</telerik:RadContextMenu> 

js:
 function RowContextMenu(sender, eventArgs) 
    {        
        var menu = $find("<%=RadMenu1.ClientID %>"); 
        var evt = eventArgs.get_domEvent(); 
 
        if (evt.target.tagName == "INPUT" || evt.target.tagName == "A") { 
        return; } 
        var index = eventArgs.get_itemIndexHierarchical(); 
        menu.show(evt); 
 
        evt.cancelBubble = true
        evt.returnValue = false
 
        if (evt.stopPropagation) 
        { 
          evt.stopPropagation(); 
          evt.preventDefault(); 
 
          var index = eventArgs.get_itemIndexHierarchical(); 
          document.getElementById("radGridClickedRowIndex").value = index;  
        }  
    } 

c#:
protected void RadMenu1_ItemClick(object sender, Telerik.Web.UI.RadMenuEventArgs e) 
    { 
       int radGridClickedRowIndex; 
       radGridClickedRowIndex = Convert.ToInt32(Request.Form["radGridClickedRowIndex"]); 
    
       GridDataItem item = (GridDataItem)RadGrid1.Items[radGridClickedRowIndex]; 
       if (item.Expanded) 
       { 
           if (e.Item.Text == "Expand/Collapse First Child"
           { 
               ((GridTableView)item.ChildItem.NestedTableViews[0]).Visible = !((GridTableView)item.ChildItem.NestedTableViews[0]).Visible; 
           } 
           else if (e.Item.Text == "Expand/Collapse Second Child"
           { 
               ((GridTableView)item.ChildItem.NestedTableViews[1]).Visible = !((GridTableView)item.ChildItem.NestedTableViews[1]).Visible; 
           } 
       }         
    }  

Hope this helps you..
Shinu.
0
Wyatt
Top achievements
Rank 1
answered on 30 Dec 2009, 09:53 PM
Thanks, Shinu!  I was able to reach a solution based on your code sample.  My implementation was slightly different, so I will provide it in case others find it useful.

'ToggleItem's expansion is toggled  
'nToggleIndex is provided if only one of the DetailTables are to be toggled  
Private Sub ToggleDetailTable(ByVal ToggleItem As GridDataItem, Optional ByVal nToggleIndex As Integer = -1)  
    If nToggleIndex = -1 Then 
        ToggleItem.Expanded = Not ToggleItem.Expanded  
    ElseIf ToggleItem.Expanded Then 
        ToggleItem.ChildItem.NestedTableViews(nToggleIndex).Visible = Not ToggleItem.ChildItem.NestedTableViews(nToggleIndex).Visible  
        Dim bLeaveExpanded = True 
        For Each TableView As GridTableView In ToggleItem.ChildItem.NestedTableViews  
            If TableView.Visible Then bLeaveExpanded = True 
        Next 
        ToggleItem.Expanded = bLeaveExpanded  
    Else 
        ToggleItem.Expanded = True 
        For nIndex As Integer = 0 To ToggleItem.ChildItem.NestedTableViews.Length - 1  
            ToggleItem.ChildItem.NestedTableViews(nIndex).Visible = (nIndex = nToggleIndex)  
        Next 
    End If 
End Sub 
Tags
Grid
Asked by
Wyatt
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Wyatt
Top achievements
Rank 1
Shinu
Top achievements
Rank 2
Share this question
or