- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
帖子末尾的模糊解决方案
使用带有 C# 代码隐藏的 asp.net 页面,我已经成功构建并填充了一个 DropDownList。
我想做的是捕获从下拉列表中选择的新值(最好使用回发到我的代码隐藏)。然后代码隐藏可以根据这个新选择的下拉列表值更新页面上的其他内容。
我的第一次尝试是使用
<asp:DropDownList ID="myDDL" runat="server" AutoPostBack="true" OnSelectedIndexChanged="foo"></asp:DropDownList>
用C#方法
public void foo(object sender, EventArgs e)
{
DropDownList ddl = sender as DropDownList;
string myValue = "";
if (ddl != null)
{
myValue = ddl.SelectedValue;
// Do some stuff
}
}
这没有用。当所选索引更改时,它简单地重新加载了页面,但是iSpostback标志始终是错误的。
所以我筛选了 SO 并尝试了一些不同的策略。最近,我尝试在代码隐藏中注册客户端 onChange 事件并关闭 AutoPostBack。
在 ASP.Net 页面中:
<asp:DropDownList ID="myDDL" runat="server" AutoPostBack="false"></asp:DropDownList>
在代码隐藏中:
myDDL.Attributes.Add("onChange", "doSomeStuff(this);"); // Done on databind.
我添加了客户端javascript来调用页面的__doPostBack函数
<script language="javascript" type="text/javascript">
function doSomeStuff(ddl) {
var ddlVals = document.getElementById(ddl.id);
__doPostBack(ddlVals, '');
}
</script>
这也失败了,虽然当我看到 javascript 正确执行时我认为它会去某个地方。
但是查看代码隐藏,它仍然无法正常工作。当我在 Page_Load 中放置断点时,IsPostBack 为 false!但它应该是一个回发!?它是使用 __doPostBack 回发的,并且(单独)使用 AutoPostBack="true"
所以我挖得更深。
根据这篇 MSDN 文章 (http://msdn.microsoft.com/en-us/library/ms178141(v=VS.85).aspx),基于页面加载的结果,我正在做一个“服务器传输”而不是所需的回发(IsPostBack 为 false,PreviousPage 与预期的一样,是应回发的同一页面,IsCallback 为 false,IsCrossPagePosting 为 false)。
会发生什么劫持 AutoPostBack 和 __doPostBack 以使其看起来和行为像“服务器传输”?
我可以在父控件/page 上设置/检查什么以确保它允许回发?
编辑:
Page_Load 看起来像这样:
private SpecialDataObject _someData;
private string foobar;
public void Page_Load(object sender, EventArgs e)
{
//set some variables.
this.foobar = "blah";
LoadSomeUnrelatedData();
if (!IsPostBack)
{
if (_someData == null)
{
LoadDataWithoutBinding();
}
BindMyData();
}
}
在 //set some variables
处设置断点,即使在 AutoPostBack 之后,Page.IsPostBack 也始终为 false。
编辑 2:
答案在服务器传输中。在从母版页加载的远程控件中,URL 在到达页面之前被检查并重新路由,有效地否定了我的回发。我之前没有看到它,因为我只在目标页面添加了断点。
最佳答案
我会检查以确保您没有在某处干扰回发的验证。要检查这一点,请在 DropDownList 上将 CausesValidation
设置为 false。
关于c# - DropDownList 不回发,即使设置了 AutoPostBack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8099848/
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
我是一名优秀的程序员,十分优秀!