asp.net – 如何填充asp:DropDown客户端?
|
我有一个带有两个< asp:DropDown>的网页控制: 当用户选择要填写状态列表的国家/地区时. 尝试#1 – OnSelectedIndexChanged 第一件事很简单:在第一个下拉列表的OnSelectedIndexChanged期间,填充第二个框: //be sure to set AutoPostBack of cbCountry to true in the properties window
protected void cbCountry_SelectedIndexChanged(object sender,EventArgs e)
{
cbState.Items.Clear();
FetchStatesForCountryIntoStateDropDown(cbState,cbCountry.SelectedValue);
if (cbState.Items.Count > 0)
cbState.SelectedIndex = 0;
}
这很有效,除了它触发页面刷新.发送帖子时用户被中断,页面被重新加载.页面不再是他们离开的地方,他们不再坐在下拉列表中. 尝试#2 – 老式的kludgey UpdatePanels @Seglo calls UpdatePanels an old-fashioned kludge.但是因为我找不到更好的东西 – 让我们来试试吧!将内容包装在更新面板中,让它实现它的神奇之处: 问题在于,当UpdatePanel更新时,它会删除这两个控件并用新的控件替换它们.这意味着用户在第一个下拉列表中失去了焦点.人们建议horrible kludges using javascript to try to save and restore the focus.但我宁愿做正确的事情. 尝试#3 – 仅UpdatePanel您需要更新的内容 我不需要更新国家/地区下拉列表(也不需要更新标签).我只需要更新州下拉列表;那么为什么不在< asp:UpdatePanel>中包装它呢?事实上this is the answer suggested on StackOverflow: 这很有效.国家下拉列表不会失去焦点.触发OnSelectedIndexChanged事件,并且状态下拉列表填充… ……我第一次改变国家下拉菜单. 如果我再次更改国家/地区,则会抛出异常:
不知何故,updatepanel正在搞乱WebForms控件;使回发数据无效.这是有道理的,因为搞乱WebForms控件会使回发数据无效. 尝试#4 – 尝试使用javascript自行伪造回发 它没有给你任何收获;但是people have tried triggering a postback manually through javascript: $('#userControl1').on('focusout',function() {
__doPostback('UpdatePanel2UniqueId','');
});
除了不知道cbCountry和UpdatePanel1的ClientID外,脚本不会运行;我甚至不知道它是否能解决我的问题 尝试#5 – 使用PageMethods获取状态列表. 现在我只是链接其他人的随机建议.我花了大约4个小时试图实施任何建议.这意味着我已经失去了一天半的时间来尝试填充一个组合框. 我无法承受在谷歌上发现的每一个随机建议都失去一天;我需要一个真正的答案.所以我只是让他们向脾气暴躁的人们展示研究工作(好像研究工作很重要). 一些people have suggested calling ASP.net function GetStates(country)
{
PageMethods.GetTeam(teamCode,CountryCallback);
}
function CountryCallback(result)
{
var teamName = $get('TeamName');
var seed = $get('Seed');
var rpi = $get('RPI');
var scoutingReport = $get('ScoutingReport');
teamName.innerText = result.TeamName;
seed.innerText = result.Seed;
rpi.innerText = result.RPI;
scoutingReport.innerText = result.ScoutingReport;
}
onchange="GetTeam(this.options[this.selectedIndex].value);"
这里的问题与尝试#2相同.视图状态将是错误的,因为我已经破坏了ASP.net背后的形式. 似乎存在一个基础问题,ASP.net和viewstate从根本上与客户端DOM更新不兼容.任何修改页面客户端的尝试都会使整个ASP.net Web表单编程模型无效. 解决方法使用AJAX Control Toolkit ……它有一个CascadingDropDown,这将是完美的!(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 实体框架 – 我们如何使用Breeze的本地时区生存
- asp.net-mvc – ASP.NET MVC重复任务
- asp.net-mvc-3 – jQuery Mobile/MVC:使用RedirectToActio
- asp.net-mvc – 如何在ASP.NET MVC控制器中访问HttpServerU
- 什么是ASP.NET WebForms相当于ASP.NET MVC的ViewData
- asp.net-mvc – 将布尔属性编辑器转换为MVC视图中的下拉列表
- asp.net – 如何测试开发机器上的子域? abc.localhost
- asp.net-mvc – 如何组合两个dataTextFields的SelectList描
- asp.net-core – 在ASP.net Core中使用BeginCollectionItem
- ASP.NET,jQuery,脏窗体和window.onbeforeunload
