2

SharePoint 2010 ソリューションで、 SPGridViewコントロールと ObjectDataSource コントロールを使用しています。SPGridview を使用すると、リスト アイテムを並べ替えたり、ページを移動したりできますが、2 つの SPGridView コントロールを同じページに配置すると問題が発生することに気付きました。列のヘッダー リンクをクリックして下の SPGridView コントロールを並べ替えると、並べ替え操作は成功します。ただし、下部の SPGridView の列ヘッダーにある ECB メニューから使用できる並べ替えオプションをクリックすると、代わりに上部の SPGridView コントロールに並べ替えが適用されます。

これを解決する方法について、誰かが修正またはガイダンスを提供できますか?

ありがとう、マジックアンディ。

4

2 に答える 2

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 に答える
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 に答える