我在SharePoint 2010解决方案中使用带有ObjectDataSource控件的SPGridView控件。 SPGridview允许我对列表项进行排序和翻页确定,但是当两个SPGridView控件放在同一页面上时,我注意到了一个问题。当我通过单击列的标题链接对较低的SPGridView控件进行排序时,排序操作成功。但是,当我单击下方SPGridView列标题上的ECB菜单中提供的排序选项时,排序将应用于上层SPGridView控件。
有人可以提供有关如何解决此问题的修复或指导吗?
谢谢,MagicAndi。
答案 0 :(得分:1)
这是MSDN上的一个解释错误和解决方案的线程。
这是另一篇描述它的博客文章 - http://sharethefrustration.blogspot.com/2010/02/spgridview-webpart-with-multiple-filter.html
答案 1 :(得分: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);
}
}
}