我有一个DDL和Button,点击后创建一个动态表;所有控件都在UpdatePanel
。
在面板外面,我有2个按钮,应该隐藏,直到创建表格。
如果按钮以visible = false
开头,然后在我点击UpdatePanel
中的GO按钮后将其设置为true,则它们永远不会显示
如果我添加第二个UpdatePanel并将2个按钮放在那里它有点可行,但是当点击任一按钮时我总是会收到此错误:
Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException:
The message received from the server could not be parsed.
如何解决这个问题?
答案 0 :(得分:3)
在“更新面板”中移动两个按钮。只有更新面板中的控件才能在Ajax调用中更新。也就是说,如果要在Ajax调用中通过代码隐藏更改任何控件的状态,则必须将其包含在“更新”面板中。您无法在Ajax调用中更改Update面板外的控件。
<强>更新强> 你需要事件处理程序。使Button可见= true;并设置他们的可见性:隐藏,然后在您的通话完成时更改如下。
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandle);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandle);
function beginRequestHandle(sender, Args) {
//Do something when call begins.
}
function endRequestHandle(sender, Args) {
document.getElementById("Button1").style.visibility = "visible";
document.getElementById("Button2").style.visibility = "visible";
}
</script>
答案 1 :(得分:0)
是的,如果你需要更新面板外的按钮,Ashwin告诉你必须让JS显示按钮。如果你的页面中有scriptmanager,那么你可以调用JS函数,这样就可以从代码隐藏中看到按钮,就像这样
<script type="text/javascript" language="javascript">
function showButtons(){
document.getElementById("<%= Button1.ClientID %>").style.visibility = "visible";
document.getElementById("<%= Button2.ClientID %>").style.visibility = "visible";
}
</script>
如果按钮是服务器控件,则使用代码块&lt;%=%&gt;获取按钮的客户端ID。在创建动态表后的代码隐藏中使用此
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "showButtons", "showButtons();", true);