使用Javascript澄清调用代码隐藏

时间:2012-04-17 05:52:30

标签: c# javascript gridview onclick postback

我正在尝试在gridview中点击一行,这样它就会导致回发,以便我可以执行代码隐藏。

我在GridView的RowDataBound事件处理程序中有这个。这个工作:

if (e.Row.RowType == DataControlRowType.DataRow)
{
     e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';";
     e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';";
     e.Row.Attributes["onclick"] = "javascript:__doPostBack('PostBackFromItemWindow', '');";
}

但这不起作用:

if (e.Row.RowType == DataControlRowType.DataRow)
{
     e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';";
     e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';";
     e.Row.Attributes["onclick"] = "<script type='text/javascript'>__doPostBack('PostBackFromItemWindow', '');</script>";
}

问题:

  1. 为什么第一个工作,但第二个不工作?
  2. 在尝试完成此任务(从javascript调用代码隐藏)时,有没有其他方法可以做到这一点?我做了一些阅读并遇到了WebMethods(),但最终不喜欢它们需要静态才能工作的事实。上面实际上给了我我需要的功能,我只是想确保它是一种可接受的方式(即它不被弃用或者其他东西),并且由于一些不可预见的错误我不会不可避免地导致自己麻烦在这一点上。

1 个答案:

答案 0 :(得分:1)

这可以帮到你:

  1. 第一个可行,因为您已指定onClick处理程序与javascript中的__doPostBack函数相关联。 'javascript:'只是指定函数是用javascript编写的,只有当脚本与元标记中指定的脚本不同时才应该使用它。

    第二个不起作用,因为您已为javascript处理程序指定了html脚本。当这转到javascript解释器时,它无法理解标签,因此无法工作。

  2. __ doPostBack不建议用于here所述的所有情况。但如果您没有其他选择创建回发,那么您可以使用它。这个link将能够为您提供更多信息。