提交页面获取不到js向DropdownList写的Options的值,如何处理

        前面所我所写的文章中有关两个DropdownList连动的例子。当我们需要取第二个DropdownList的值时,会碰到取不到的情况:

    比如,你页面有一个按钮,点击按钮时,获取它的值:string tmp = BList.SelectedValue; ,这时,你断点到它的下一句,在监视里面看tmp的结果是""。

    网上搜索了一下,仅仅找到一个相关的帖子:http://topic.csdn.net/t/20030212/11/1419881.html。差不多就是这个情况,而我的做法也是,在第二个DropDownList触发onchange事件后,调用javascript将当前选中值添加到隐藏域:

function  SetValue()
{
    document.Form1.PListValue.value 
=  document.getElementById( " PList " ).value;
}

PListValue为隐藏域,PList为第二个DropdownList。同时,你需要做一个补充,万一用户在连动第二个DropList后,没有更改它的选项,那就不会触发onchange事件,那么隐藏域仍然为空,你需要在js向第二个DropdownList写option对象后,将它的value赋给隐藏域。那么差不多就解决了这个问题,下面是我前面文章中,向第二个DropdownList写option的方法,红色为添加行:

function  SetOptions(response)
{
    
if (response  !=   null )
    {
        
var  ds  =  response.value;
        clearList();
                    
        
if (ds  !=   null   &&   typeof (ds)  ==   " object "
        {
            
for ( var  i = 0 ;i < ds.Rows.length;i ++
            {
                
var  option  =  document.createElement( " OPTION " );
                option.value 
=  ds.Rows[i].RegionId;
                option.text 
=  ds.Rows[i].RegionName;
                document.Form1.PList.options.add(option);
            }
        }
        document.Form1.PListValue.value 
= document.getElementById("PList" ).value;
    }
}

补充:导致这个问题的原因是,脚本数据没有写入ViewState。其实,我们可以这样处理:在第一次进入这个页面时,将第二个DropdownList所有可能的项,加载进来。然后,你第一个DropdownList触发的onchange事件后的处理——只是对这些项的筛选。

以上补充方法经过测试,行得通。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值