页面有一个省市级联菜单,选择省份的时候,通过ajax从后台得到数据手动绑定在城市下拉框中。
问题:选择省份,选择城市后,点击按钮,页面从A页跳转到B页,在B页面点击浏览器后退,回到A页面,刚才选择的城市下拉框中没有数据了,请问,有什么好的方法可以避免这种情况?谢谢!
你的城市下拉框触发条件是省份下拉框的onchange
你可以在页面load事件中调用你的Ajax方法
级联菜单默认是选了第二个菜单后,才去数据来源或数据库取得数据,
因此页面刚 load 时,还得不到这第二个菜单的数据,因此页面 load 时无法用代码给默认值。
办法:
(1) 一楼讲的
(2) 把级联菜单的来源,设为一个文件,如 .js 文件,在页面第一次 load 时,
就读取这个 .js 文件,取得它当作级联菜单每个菜单的来源。
public partial class test_test_ddl_v3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DropDownList_step11.Attributes["onChange"] = "build_FiveDdlOfStep1(this.selectedIndex);";
DropDownList_step12.Attributes["onChange"] = "saveValueToHiddenField2(this.selectedIndex);";
DropDownList_step13.Attributes["onChange"] = "saveValueToHiddenField3(this.selectedIndex);";
在页面加载时,设置默认省和默认市。
把选中的省份值和城市值放到隐藏域中,在A页面load时先查找省份隐藏域是否有值,有的话就根据省份值取的城市数据,放入城市下拉列表,再根据城市隐藏域中的值,选中城市数据。
页面每次执行最先执行的是js,你可以在也面的后台文件声明两个值用来接收每次跳转过来的值,然后在js中调用判断后台的两个变量值,如果值存在,则是B页面跳转过来的,那么可以让下拉框根据那两个变量加载第三个下拉狂跌值,如果没有则重新查询下拉框的值