基於由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);
}
}
}
布賴恩對於延遲接受這個答案表示歉意。我發佈了我的解決方案,該解決方案基於您提供的鏈接。 – MagicAndi 2010-11-04 17:01:37