我创建了两次相同的按钮:一次在Page_Load上,另一次在:Page_PreRender上.我希望看到相同的行为,但是,在Page_PreRender上创建的按钮不能按照预期的方式工作.(即属性"causeValidation"仍为true).
"我想为page_preRender中的按钮禁用"causeValidation",我想在PreRender中使用它.此外,我希望Button_Click函数对两个按钮执行,目前它只对"Page_load"上创建的按钮执行.
我正在寻找这种行为的解决方案或解释.
谢谢.
看看代码:
protected void Page_Load(object sender, EventArgs e)
{
form1.Controls.Add(GetButton("Button1", "Click"));
}
protected void page_PreRender(object sender, EventArgs e)
{
form1.Controls.Add(GetButton("Button3", "Click"));
}
private Button GetButton(string id, string name)
{
Button b = new Button();
b.Text = name;
b.ID = id;
b.CausesValidation = false;
b.Click += new EventHandler(Button_Click);
b.OnClientClick = "ButtonClick('" + b.ClientID + "')";
return b;
}
protected void Button_Click(object sender, EventArgs e)
{
ClientScript.RegisterClientScriptBlock(this.GetType(), ((Button)sender).ID, "<script>alert('Button_Click');</script>");
Response.Write(DateTime.Now.ToString() + ": " + ((Button)sender).ID + " was clicked");
}
Run Code Online (Sandbox Code Playgroud)
这是javascript:
<script type="text/javascript">
function ButtonClick(buttonId) {
alert("Button " + buttonId + " clicked from javascript");
}
</script>
Run Code Online (Sandbox Code Playgroud)
更新: 让我添加:两个按钮都执行客户端的脚本.这意味着创建了按钮."看看函数GetButton()".
另外,我在"onRender"而不是"on Page_Load"上创建按钮的原因是:如果我有一个用于动态地将数据输入表格的表单,并且我在按钮点击时添加数据,页面将首先是PostBack,然后执行事件处理程序,(即数据被添加到表中,但会显示在NEXT postBack上).因此,PreRender用于在button_click事件更新后显示表格.
我希望这个添加很有用
| 归档时间: |
|
| 查看次数: |
919 次 |
| 最近记录: |