如何在服务器控件的触发事件中执行js脚本函数
小生最近在研究一个类似于遮罩层的js脚本,在asp.net中使用html控件可以很容易的调用到该js脚本中的函数,并有响应效果;我想在服务器控件(Button)的单击事件中实现同样的效果,但效果不是很理想,我想到的两种方法都不好使。
1。把代码写在Click事件中
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("<script language='javascript'>ShowAlertText(document.getElementById('TextBox1').value,'','',null,null);</script>");
}
这样根本不能看到效果,而且网页提示脚本错误,其中的js函数在htmlButton的onclick事件中是可以实现的。
2。在Page_Load中写入代码如下
if (!this.IsPostBack)
{
this.Button1.Attributes["onclick"] = "ShowAlertText(document.getElementById('TextBox1').value,'','',null,null);";
}
效果是可以出现,但是遮罩层只是瞬间的出现又关闭了,这是不是因为页面已经提交的原因?如何才能让使用者点击确定或关闭才让遮罩层消失。
有人提示说直接就用html控件,但是我点击Button还需要其他的一些与数据库交互的行为,如果用js来写的话,本人对js又很生疏,不好解决,有高手能否提示一下,该情况下该如何处理才能得到想要的效果呢?
------解决方案--------------------
if (!this.IsPostBack)
{
}
这个写到外面来
this.Button1.Attributes["onclick"] = "ShowAlertText(document.getElementById('TextBox1').value,'','',null,null);return false";
------解决方案--------------------出现一下又不见了。。。是你页面刷新重新加载的问题
如果不会用纯HTML控件+JS+AJAX交互。。
那你原先的写法。。。在按钮外面加个updatepannel实现无刷新。。。
------解决方案--------------------window.open
OnClientClick=<%# "OpenWindow('','','');return false;"%>
jwindow
function OpenWindow(id,width,height)
{
var url = "a.aspx";
OpenJWindow('#openwin', url, width,height, EditClosed);
}