繁体   English   中英

用Java澄清调用后台代码

[英]Calling code-behind with Javascript clarification

我正在尝试使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. 第一个有效的原因是,您已指定onClick处理程序与javascript中的__doPostBack函数相关联。 “ javascript:”仅指定该函数是用javascript编写的,并且仅当脚本与meta标记中指定的脚本不同时才应使用此函数。

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

  2. 不建议将__doPostBack用于此处提到的所有情况。 但是,如果您没有其他选择来创建回发,则可以使用它。 链接将为您提供更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM