如果您遇到的问题是您的按钮位于更新面板之外,您可以执行以下操作。页面代码绑定:
protected void Page_Load(object sender, EventArgs e)
{
string hideScript = string.Format("function updateButtonVisibility( visibility ) {{ var button = $('#{0}'); if (visibility) {{ button.show(); }} else {{ button.hide(); }} }}", this.button1.ClientID);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "updateButtonVisibility", hideScript, true);
}
在您的用户控制命令处理程序中:
bool shouldButtonBeVisible = false; //update this appropriately in your logic
ScriptManager.RegisterStartupScript(this, this.GetType(), "upUpdateButtonVisibility", "updateButtonVisibility(" + shouldButtonBeVisible ? "true" : "false" + ");", true);
请注意,这会在您的 UC 和页面之间创建紧密的依赖关系。它要求使用此控件的任何页面都已注册此脚本。有一些方法可以解决这个问题(例如设置要调用的函数脚本回调,检测该 javascript 函数是否存在等),但这至少应该让你动起来。
如果更新面板完成后页面上有特定内容可以关闭,最好注册一个结束请求处理程序
$(function() { Sys.WebForms.PageRequestManager.getInstance().add_endRequest(updatePanelEndRequestHandler); } );
function updatePanelEndRequestHandler() {
var shouldBeVisible = $('.MyClassThatSaysIShouldntAllowMoreButtons').length > 0; //do some checking on the grid
updateButtonVisibility(shouldBeVisible);
}