0
<td><input type="image" style="border-width:0" alt="Do an Edit" title="Edit the repeater row" tabindex="0" src='<%=ResolveUrl("~/css/image.png") %>' onclick='showModal(<%#Container.ItemIndex %>); return false;'/></td>

我已经在使用onClick()调用 javascript 方法了。现在,我想向该元素添加另一个事件以触发服务器端事件 - 比如说使用onKeyUp- 并将转发器上的 1 个参数传递给服务器端。

这可能吗,或者我必须先调用 javaScript,然后页面上的 Javascript 将调用我的服务器端。(我认为这种方式服务器端代码中的方法必须是静态的)。

4

1 回答 1

0

您可以将不可见的 LinkBut​​ton 添加到您的页面(例如带有空白文本的 LinkBut​​ton),并从您的客户端onKeyUp事件调用 LinkBut​​ton 的click()方法并捕获Click事件服务器端。

要传递参数,您可以使用客户端和服务器端均可读取的任何控件,例如隐藏字段。

例如 - 您的 HTML 标记可能如下所示:

<asp:TextBox ID="xtxtMyText" runat="server" onkeyup="doMyPostback()"></asp:TextBox>
<asp:HiddenField ID="xhidParam" runat="server" />
<asp:LinkButton ID="xlnkMyPostBack" runat="server" OnClick="xlnkMyPostBack_Click"></asp:LinkButton>

<script type="text/javascript">

  function doMyPostback(e) {
      var evt = window.event ? window.event : e;

      if (evt.keyCode == 13) {
          document.getElementById('xhidParam').value = document.getElementById('xtxtMyText').value; 
          document.getElementById('xlnkMyPostBack').click()
      }
  }

</script>

在这里,您有一个触发keyUp事件的文本框、一个导致服务器端Click事件的隐藏链接按钮和一个用于传递参数的隐藏字段。在这种情况下,如果用户按 Enter 键,文本框的内容将被复制到隐藏变量并单击链接按钮。

在服务器端,您可以处理该事件并从隐藏字段中读取传递的参数,例如

protected void xlnkMyPostBack_Click(object sender, System.EventArgs e)
{
    Response.Write(xhidParam.Value);
}
于 2012-06-18T21:46:36.160 回答