2010-10-20 22 views
2

我在SharePoint 2010解决方案中使用了一个带有ObjectDataSource控件的SPGridView控件。 SPGridview允许我对列表项目进行排序和翻页确定,但是当两个SPGridView控件放置在同一页面上时,我注意到了一个问题。当我通过单击列标题链接对较低的SPGridView控件进行排序时,排序操作成功。但是,当我点击较低SPGridView列标题上的ECB菜单可用的排序选项时,排序应用于上部的SPGridView控件。用多个SPGridViews排序的问题

任何人都可以提供修补程序或指导如何解决此问题吗?

谢谢,MagicAndi。

回答

1
+0

布赖恩对于延迟接受这个答案表示歉意。我发布了我的解决方案,该解决方案基于您提供的链接。 – MagicAndi 2010-11-04 17:01:37

1

基于由brian brinley提供的链接,我想出了这个稍微更通用的解决方案:

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