现在我的datagrid有一列为修改,点修改时想调用客户端的自定义函数ShowModal()来打开模式窗体,我这样写为什么总报错:报不到对象.
代码如下:if(e.CommandName=="CmdUpdate")
{
Response.Write("<script language='javascript'>ShowModal();</script>") ;
}说明:ShowModal为自定义javascript函数
===
如果代码改成直接调用javascript函数则不会有问题,如下,why?if(e.CommandName=="CmdUpdate")
{
Response.Write("<script language='javascript'>alert('hell');</script>") ;
}
代码如下:if(e.CommandName=="CmdUpdate")
{
Response.Write("<script language='javascript'>ShowModal();</script>") ;
}说明:ShowModal为自定义javascript函数
===
如果代码改成直接调用javascript函数则不会有问题,如下,why?if(e.CommandName=="CmdUpdate")
{
Response.Write("<script language='javascript'>alert('hell');</script>") ;
}
---------------------------
苦海无边 回头无岸
---------------------------
你问题的原因是:
当Response.Write的时候,前台页面调用ShowModal()方法,可是这个方法的代码一定是在Response.Write之后才定义的。
private void dgDepart_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
LinkButton myLbtn = (LinkButton)e.Item.Cells[5].Controls[0];
e.Item.Attributes.Add("ondblclick","Goto('FPhoneModal.aspx?OpFlag=1&Phone="+e.Item.Cells[0].Text.Trim()+"')");
myLbtn.Attributes.Add("onclick","return confirm('您确定删除该条记录');");
}
}前台
function Goto(strUrl){
str=window.showModalDialog(strUrl,'','dialogheight :300px; dialogwidth :700px; edge: Raised; center: Yes; help: No; resizable: No; status: No; scroll:No;');
//alert(str)
if(str =='0')
{
// alert('操作失败');
return false;
}
else if(str=='1')
{
// alert('操作成功');
// document.all.btnRef.focus();
//alert('focus');
document.all.btnRef.click();
//alert('click');
return false;
}
}
1、在前台页面最后写一个<%#js1%>
2、后台定义Public String js1 = "";
3、响应事件:
if(e.CommandName=="CmdUpdate")
{
js1 = "<script language='javascript'>ShowModal();</script>" ;
this.DataBind();
}