2

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

任何人都可以提供有关如何解决此问题的修复或指导吗?

谢谢,魔术师安迪。

4

2 回答 2

1

这是 MSDN 上的一个线程,解释了错误和解决方案。

http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/af6167a3-21f2-4bb2-94a9-5c22e1aad34d

这是另一篇描述它的博客文章 - http://sharethefrustration.blogspot.com/2010/02/spgridview-webpart-with-multiple-filter.html

于 2010-10-20T13:00:32.330 回答
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);
        }
    }
}
于 2010-11-04T17:05:57.713 回答