首页 新闻 搜索 专区 学院

下拉框联动,回发丢失值问题

0
悬赏园豆:20 [已解决问题] 解决于 2011-02-18 14:11

说一下情况:

  2个下拉框,A是在服务器端绑定,B是在客户端根据A的值ajax动态加载,另外有一个checkbox,是服务器端的,这个checkbox点击触发服务器事件,就是这里触发之后,B就变成选择空值了,原来有值的。尝试和很多方法,比如把B的值先保存起来,然后在赋值也不行。

  页面有用到MagicAjax控件,这个应该不会影响。

清海扬波的主页 清海扬波 | 小虾三级 | 园豆:758
提问于:2011-02-18 10:16
< >
分享
最佳答案
0

重新绑定一下就可以了:

 

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
WebService ser
= new WebService();
//为A调用的service方法,为了简单,暂时只返回一个值
string result = ser.GetValue(A.SelectedValue);

B.Items.Clear();
B.Items.Add(
new ListItem(result));
}

 

去掉上面的方法.在客户端重新绑定如何呢?

window.onload = function () {
var selectA
= document.getElementById("A");

//假设A的第一行为空,
if (selectA.selectedIndex == 0) {
return;
}

var aValue
= selectA[selectA.selectedIndex].value;

WebService.GetValue(aValue, function (result) {
var selectB
= document.getElementById("B");
selectB.innerHTML
= "";

var option
= document.createElement("option");
option.innerText
= result;
selectB.appendChild(option);
});
}

 

收获园豆:15
Localhost | 菜鸟二级 |园豆:443 | 2011-02-18 11:26
如果都是服务器端来做,就不会有这个问题了。但是B是根据A得到的,不用重新add,这个过程在客户端就已经得到了,现在是怎么让B保留自己的值。 这个方法也不行。
清海扬波 | 园豆:758 (小虾三级) | 2011-02-18 11:32
客户端绑定如何,去掉服务器的那个方法,只添加客户端方法,代码如上~
Localhost | 园豆:443 (菜鸟二级) | 2011-02-18 11:43
已经解决,还是ajax控件的问题。把B放在ajax之外就可以了。还是谢谢你。
清海扬波 | 园豆:758 (小虾三级) | 2011-02-18 14:10
其他回答(1)
0

重新绑定 

收获园豆:5
爱上鸟儿 | 园豆:180 (初学一级) | 2011-02-18 11:05
首先这个肯定是不能通过服务器端绑定的,因为后面取值是通过ajax取,然后赋值的,重新绑定没有效果。里面的项目还是有的,但是选择的已经是默认的空值,而不是原来那个值了。
支持(0) 反对(0) 清海扬波 | 园豆:758 (小虾三级) | 2011-02-18 11:08
就是B根据A进行数据绑定,checkbox点击触发服务器事件后,在事件中再加入根据A的值绑定B的值的代码
支持(0) 反对(0) 爱上鸟儿 | 园豆:180 (初学一级) | 2011-02-18 11:20
combox.SelectedIndex = 1;这样也是没有效果的。所以重新绑定也不行。
支持(0) 反对(0) 清海扬波 | 园豆:758 (小虾三级) | 2011-02-18 11:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册