- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在一个简单的 ASP 页面中,TextBox AutoPostBack 事件将阻止按钮单击事件(除非按钮被快速点击)和其他控件(如 ListBox)的 AutoPostBack 事件。
这里有一个类似的问题,但我对被迫使用客户端或 AJAX 解决方案感到不满意:Have to click button twice in asp.net (after autopostback textbox)
示例 ASPX 页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="temp.aspx.cs" Inherits="temp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" OnTextChanged="PostBack"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="PostBack" Text="Button" /><br />
<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="PostBack">
<asp:ListItem>value1</asp:ListItem>
<asp:ListItem>value2</asp:ListItem>
</asp:ListBox><br />
<br />
Events Fired:<br />
<asp:TextBox ID="TextBox2" runat="server" Height="159px" TextMode="MultiLine" Width="338px"></asp:TextBox></div>
</form>
</body>
</html>
背后的 C# 代码:
public partial class temp : System.Web.UI.Page
{
protected void PostBack(object sender, System.EventArgs e)
{
this.TextBox2.Text += string.Format("PostBack for - {0}\n", ((System.Web.UI.Control)sender).ID);
}
}
我已经能够通过使用 mousedown 而不是点击事件来提交表单来部分解决按钮的这个问题(我还在客户端阻止了额外的 AutoPostBack 事件,并在按钮点击事件服务器端处理了任何额外的字段更改)
但是,这意味着我的按钮并没有按照标准(点击释放)方式运行。
对于这个问题,是否有更好的解决方案不需要尝试在 javascript 客户端中完成所有操作? (我正在编写大量代码来在这些回发期间读取服务器数据,因此 javascript 不是理想的解决方案。)
我还试图避免为这些页面切换到 AJAX 库,因为我添加的每个新库都必须经过安全审核等。
注意:我目前正在使用 ASP.Net 2.0/VS 2005,但如果此类问题在以后的版本中得到修复,那将是一个令人信服的升级理由。 (据我了解,在ASP.Net 4/VS 2010中似乎也出现了同样的问题)
最佳答案
在字段(或其他输入控件)上设置 AutoPostBack="true"的原因是因为您希望页面在该控件的数据更改时回发 - 而无需用户单击按钮。听起来这正是正在发生的事情:当字段失去焦点时,页面会进行回发。
也许我误解了这个问题?您能否提供更多有关您需要页面/表单如何运行的信息?
编辑:更多信息,基于 OP 的评论。
我想我明白了:“正常”情况是他们从 DropDownList1 中选择某些内容,然后您根据 DropDownList1 中的所选项目自动回传以设置 DropDownList2 的值。但是,用户可能并不关心第二个列表;如果他们单击“搜索”,您希望单击按钮实质上中止自动回发(已经在进行中),并启动新的回发。
不幸的是,我认为在任何版本的 ASP.NET 中都没有任何功能可以“中止”已经在进行中的回发(无论如何不是来自客户端代码)。因此,为了实现上述行为,您将不得不在标准 ASP.NET 回发行为之外做一些事情。这里有一些想法,但绝不是一个详尽的 list :
希望这对您有所帮助!
关于c# - TextBox AutoPostBack 抢占更多事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6629099/
AutoPostBack=True 和 AutoPostBack=False 有什么区别? 最佳答案 取自 http://www.dotnetspider.com/resources/189-Auto
开始之前,我已经看过this question about a very similar topic (以及 this one 和 this one ),没有一个能完全回答我的问题。我已经理解这些问题
我有一个页面,当发生自动或部分回发时,焦点设置到地址栏而不是下一个控件。有趣的是,当我在我的 RadScriptBlock 中放置一个警报时,在单击“确定”之后,焦点会转到正确的控件 - 或者 - 如
我有 3 select输入 form , 代表日期。一个是日,一个是月,一个是年。 这些选择的选项是通过使用 javascript 添加的:例如,如果选择的年份可以被 4 整除并且月份是二月,那么一天
我想在 asp:DropDownList 中选择特定值时显示确认对话框。如果确认对话框返回 false(取消),那么我想阻止 AutoPostBack。 但是,它会忽略 foo() 的返回值并实际执
我有一个 asp.net 页面,上面有许多控件,包括: 带有 autopostback = true 和服务器端 textchanged 事件实现的文本框 实现了服务器端点击事件的按钮 一旦用户离开控
在一个简单的 ASP 页面中,TextBox AutoPostBack 事件将阻止按钮单击事件(除非按钮被快速点击)和其他控件(如 ListBox)的 AutoPostBack 事件。 这里有一个类似
我们在带有 AutoPostBack="true" 的 UpdatePanel 中有两个复选框 单击这些复选框时,将触发 CheckedChanged 事件。一切顺利。 现在,我们有另一个作用于相
我正在构建一个页面,其中包含页面上的一些静态组件(下拉列表、按钮、用于容纳它们的表格),但是一个表格单元格充满了可变生成的复选框。按下按钮时,页面代码会计算要放置的复选框并为每个需要的复选框创建一个新
我有一个带有两个下拉列表的 WebForm,其中第二个的内容取决于第一个。 因此,如果用户更改类别,则第二个下拉列表需要填写子类别列表。 这听起来像是 AutoPostBack 的典型工作。 但是,A
搜索后,我发现了许多建议,但没有一个能解决问题。 在属性窗口中,TextBox (Suggested here) 的 EnableViewState = True。我在 TextBox 中输入一个新
一个 TextBox设置为 AutoPostback因为更改值会导致重新计算和显示许多(仅显示)字段。 这很好用。 但是,当该字段被移出时,焦点会短暂移动到下一个字段,然后在重新绘制页面时消失,因此任
在 jQuery 中,有什么方法可以区分回发下拉列表和非回发下拉列表(ASP.NET 3.5): $('select').change(function(e) { //somethin
我有这段代码可以与用户检查是否可以离开页面而不保存: window.onbeforeunload = !isPostBack && confirmExit; function isPostBack(
我想做this但在 ASP.NET 中。我该如何在 asp.net/背后的代码中编写这个?我已经有了 protected void chkBox_CheckedChanged(object sende
我下载了一个名为“Gentelella-Master Admin”的模板,用于我的 asp.net 应用程序。情况就像我有一个启用了自动回发的下拉列表,当它不活动时,隐藏的 div 会折叠到下拉列表中
是否可以在没有 AutoPostBack=True 的情况下强制下拉列表触发 OnSelectedIndexChanged 事件? 我之所以这么说,是因为我的表单中有一些 RadComboBoxes(
花了一天时间寻找解决方案。但没有成功。我只是想为我的学生创建一个百分比计算表。这是我的 .aspx 代码 $(document).ready(function
因为我什至无法描述问题,所以我不知道如何放置标题,这就是问题所在.. (这只是简单的问题) 假设我有两个复选框设置为 AutoPostBack=True protected void cbPop_Ch
有人可以建议...我无法弄清楚为什么在我更改 ddl 的索引后自动回发不会发生。 请告知我缺少什么?这是标记: 最佳答案 AutoPostBack 对我有用,但您可能想尝试设置 CausesVali
我是一名优秀的程序员,十分优秀!