ASP.NET 2.0:使用 AutoPostBack=true 从 onChange 调用 javascript 函数

发布于 2024-07-15 01:51:08 字数 565 浏览 8 评论 0原文

我有一个 ASP.NET DDL,当我查看源代码时,它看起来像这样:

<select name="testControl" onchange="DoCustomStuff();setTimeout('__doPostBack(\'testControl\',\'\')', 0)" id="testControl">

它在 .cs 页面上看起来像这样:

<asp:DropDownList ID="testControl" runat="server" onchange="DoCustomStuff()" OnSelectedIndexChanged="testControl_Changed" AutoPostBack="true" />

任何人都可以看到在这样的 DDL 上使用 onchange 和 AutoPostBack="true" 的问题吗? 我问这个问题是因为我们有一些用户的 DoCustomStuff() 似乎没有被正确调用,我想知道 __doPostBack() 是否可以在 DoCustomStuff() 完成其工作之前执行。

I have an ASP.NET DDL that looks like this when I view source:

<select name="testControl" onchange="DoCustomStuff();setTimeout('__doPostBack(\'testControl\',\'\')', 0)" id="testControl">

It looks like this on the .cs page:

<asp:DropDownList ID="testControl" runat="server" onchange="DoCustomStuff()" OnSelectedIndexChanged="testControl_Changed" AutoPostBack="true" />

Can anyone see a problem with using onchange and AutoPostBack="true" on a DDL like this? I ask because we have some users for whom the DoCustomStuff() doesn't seem to be called correctly, and I'm wondering if it would be possible for the __doPostBack() to be executed before DoCustomStuff() completes its work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

念﹏祤嫣 2024-07-22 01:51:08

尝试像这样手动附加回发引用:

Page.ClientScript.RegisterClientScriptBlock(
  typeof(_Default), 
  "PageScripts", 
  string.Format("function DoCustomStuff() { /* Your Code Here */ {0} }", Page.ClientScript.GetPostBackEventReference(testControl, string.Empty))
);

testControl.Attributes["onchange"] =  "DoCustomStuff();";

这为您提供回发客户端参考:

Page.ClientScript.GetPostBackEventReference(testControl, string.Empty))

Try to attach postback reference manually like that :

Page.ClientScript.RegisterClientScriptBlock(
  typeof(_Default), 
  "PageScripts", 
  string.Format("function DoCustomStuff() { /* Your Code Here */ {0} }", Page.ClientScript.GetPostBackEventReference(testControl, string.Empty))
);

testControl.Attributes["onchange"] =  "DoCustomStuff();";

this gives you the postback client side reference :

Page.ClientScript.GetPostBackEventReference(testControl, string.Empty))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文