2009-11-20 9 views
1

J'utilise un RadGrid (2009 Q2) avec une hiérarchie. Y a-t-il un moyen dans l'API client d'étendre toutes les lignes et vice-versa?Développez tous les éléments dans RadGrid Hierarchy

merci!

Mise à jour: J'ai écrit une fonction javascript basé sur l'api documentation proposée par Dick Lampard ci-dessous pour ouvrir/fermer toutes les lignes dans un RadGrid avec trois niveaux. Il développe toutes les lignes mastertableview et toutes les lignes detailtableview imbriquées dans les deux sous-niveaux de la première ligne mastertableview, mais il se brise quand il passe aux lignes detailtableview pour la deuxième ligne mastertableview (ouah!). L'erreur que j'obtiens est "_350 is undefined". Cela vient d'un fichier Telerik.Web.UI.WebResource.

function ExpandCollapseAll(expand) { 
    var grid = $find("<%= rgHistory.ClientID %>"); 

    master = grid.get_masterTableView(); 
    var masterRowCount = master.get_dataItems().length; 

    for (masterIndex = 0; masterIndex < masterRowCount; masterIndex++) { 
     if (expand) { 
      master.expandItem(masterIndex); 
     } 
     else { 
      master.collapseItem(masterIndex); 
     } 
    } 

    var detailTables = grid.get_detailTables(); 
    var detailTableCount = detailTables.length; 

    for (detailTableIndex = 0; detailTableIndex < detailTableCount; detailTableIndex++) { 
     var detailTable = detailTables[detailTableIndex]; 
     var rowCount = detailTable.get_dataItems().length; 
     for (rowIndex = 0; rowIndex < rowCount; rowIndex++) { 
      if (expand) { 
       //expandItem is failing! detailTableIndex and rowIndex are correct 
       detailTables[detailTableIndex].expandItem(rowIndex); 
      } 
      else { 
       detailTables[detailTableIndex].collapseItem(rowIndex); 
      } 
     } 
    }    
} 

ANY IDÉES?!?!

Répondre

3

Il existe une API client pour l'expansion de la hiérarchie ainsi que la méthode du serveur ExpandHierarchyToTop(). Découvrez this demo.

Dick

1

Si vous souhaitez voir tous les niveaux de la hiérarchie, Set HierarchyDefaultExpanded au MasterTableView et tous les GridTableViews. Voir this link pour plus de détails.

+0

Cela fonctionne pour le chargement de la page. Comment faire cette action depuis javascript? – Birey

0

Essayez cette

protected void Page_PreRenderComplete() { 
if (!Page.IsPostBack) {  
    foreach (GridItem item in MyGrid.MasterTableView.Controls[0].Controls) {  
     if (item is GridGroupHeaderItem) 
     if (item.GroupIndex.ToString() != "0") 
      item.Expanded = !item.Expanded; 
    } 
    } 
}  
0

après radGrid.DataBind()

utilisent ce Mehtod

private void ExpanadAllRadGridNodes() 
     { 
      foreach (GridDataItem item_L1 in radgridQuestionGroups.MasterTableView.Items) 
      { 
       foreach (GridTableView item_L2 in (item_L1 as GridDataItem).ChildItem.NestedTableViews) 
       { 
        foreach (GridDataItem item_L3 in item_L2.Items) 
        { 
         item_L3.Expanded = true; 
        } 
       } 
      } 
     }