2016-07-21 1 views
0

Voici une grille imbriquée avec un événement:grilles emboîtées ne déclenche pas l'événement

<%--BLOCK : TEST--%> 
<telerik:GridTableView CssClass="noColapse" runat="server" Name="RptPV" DataSourceID="LDS_PV_info" DataKeyNames="MSE_compteur" HierarchyDefaultExpanded="True" 
         OnCallingDataMethods="Unnamed_CallingDataMethods" 
         OnDataBinding="Unnamed_DataBinding" 
         OnDisposed="Unnamed_Disposed" 
         OnCreatingModelDataSource="Unnamed_CreatingModelDataSource" 
         OnDataBound="Unnamed_DataBound" 
         OnInit="Unnamed_Init" 
         OnLoad="Unnamed_Load" 
         OnPreRender="Unnamed_PreRender" 
         OnSelectedIndexChanged="Unnamed_SelectedIndexChanged" 
         OnUnload="Unnamed_Unload" > 

code derrière:

protected void Unnamed_CallingDataMethods(object sender, CallingDataMethodsEventArgs e) 
    { this.here.Text += "CallingDataMethods";} 

protected void Unnamed_DataBinding(object sender, EventArgs e) 
    { this.here.Text += "Unnamed_DataBinding";} 

protected void Unnamed_Disposed(object sender, EventArgs e) 
    { this.here.Text += "Unnamed_Disposed";} 

protected void Unnamed_CreatingModelDataSource(object sender, CreatingModelDataSourceEventArgs e) 
    { this.here.Text += "Unnamed_CreatingModelDataSource";} 

protected void Unnamed_DataBound(object sender, EventArgs e) 
    { this.here.Text += "Unnamed_DataBound";} 

(...) 

Et mon here.text séjour vide. Mais la grille imbriquée est affichée.

J'ai besoin d'accéder à une valeur clé parente, une grille effondrement imbriquée, cacher une grille imbriquée ou compter le nombre de lignes.
Il n'y aura pas d'édition, pas de clic de ligne, ces grilles afficheront uniquement les données dans colonnes modélisées>Modèle d'élément.

Est-il possible pour une grille imbriquée à l'événement feu? Dans certains cas, je peux accéder aux informations sur les données.

Répondre

0

Une grille imbriquée NE PAS appliquer l'événement!

Si vous avez besoin d'accéder aux tables de détail, articles, etc.
Vous devez ajouter une méthode à la PreRender dans le MasterTableView comme ceci:

<MasterTableView DataSourceID="myDataSource" 
        AllowMultiColumnSorting="True" 
        DataKeyNames="Key1,Key2,KeyN" 
        HierarchyDefaultExpanded="True" 
        OnPreRender="Unnamed_PreRender" > 

La méthode itérer à travers la grille en utilisant récursive. La façon dont vous le faites peut changer en fonction de votre HieararchyLoadMode.

Donc, c'est ma façon de le faire, le moyen le plus simple existe si vous êtes en mode Client ou Serverbind.

protected void Unnamed_PreRender(object sender, EventArgs e) 
{ 
    // MyControler is my recursive method. 
    MyControler(RadGRID_MASTER.MasterTableView); 
} 



private void MyControler(GridTableView gridTableView) 
{ 
    GridItem[] nestedViewItems = gridTableView.GetItems(GridItemType.NestedView);  
    foreach (GridNestedViewItem nestedViewItem in nestedViewItems) 
    { 
     foreach (GridTableView nestedView in nestedViewItem.NestedTableViews) 
     { 
      // Here you can operate your controls the way you want. 
      if (nestedView.Name == "LAC" && nestedView.Items.Count == 0) 
      { 
       // Do stuff 
      } 

      if(nestedView.HasDetailTables) 
      { 
       MyControler(nestedView); 
      } 
     } 
    } 
}