2010-10-20 7 views
2

J'utilise un contrôle SPGridView avec un contrôle ObjectDataSource dans une solution SharePoint 2010. Le SPGridview me permet de trier et de parcourir un élément de la liste, mais j'ai remarqué un problème lorsque deux contrôles SPGridView sont placés sur la même page. Lorsque je trier le contrôle SPGridView inférieur en cliquant sur le lien d'en-tête d'une colonne, l'opération de tri est réussie. Toutefois, lorsque je clique sur les options de tri disponibles via le menu ECB dans l'en-tête de la colonne inférieure de SPGridView, le tri est appliqué au contrôle SPGridView supérieur à la place.Problème de tri avec plusieurs SPGridViews

Quelqu'un peut-il offrir une solution ou des conseils sur la façon de résoudre ce problème?

Merci, MagicAndi.

Répondre

1
+0

Brian, excuses pour le retard à accepter cela comme une réponse. J'ai posté ma solution, basée sur les liens que vous avez fournis. – MagicAndi

1

Sur la base des liens fournis par brian brinley, je suis venu avec cette solution un peu plus générique:

protected override void OnPreRender(EventArgs e) 
{ 
    if (this.HeaderRow != null) 
    { 
     foreach (WebControl control in this.HeaderRow.Controls) 
     {      
      UpdateTemplateClientID(control); 
     }  
    } 

    base.OnPreRender(e); 
} 

private void UpdateTemplateClientID(Control control) 
{ 
    if (control is Microsoft.SharePoint.WebControls.Menu) 
    { 
     Microsoft.SharePoint.WebControls.Menu menuControl = control as Microsoft.SharePoint.WebControls.Menu; 
     string jsFunctionCall = menuControl.ClientOnClickPreMenuOpen; 
     menuControl.ClientOnClickPreMenuOpen = jsFunctionCall.Replace("%TEMPLATECLIENTID%", this.ClientID + "_SPGridViewFilterMenuTemplate"); 
    } 
    else if (control.HasControls()) 
    { 
     foreach (WebControl c in control.Controls) 
     { 
      UpdateTemplateClientID(c); 
     } 
    } 
}