Ajax使两个DropDownList控件无刷新联动,怎么从服务器回传获取第二个DropDownList的值?

Bankhu 2007-04-28 08:39:56
使用AjaxPro.dll实现DropDownList的功能我已经实现了,现在的问题就是怎么将客户端选定的项在.cs页面中获取到并保存?我在网上找了很多资料,现在采取的是Request.Form["id"]的方法,但是当提交页面保存后,页面重新Load的时候该值又为空了,所以我只能将该值获取到并保存,不能向TextBox那样当页面重新Load后,值保持不变。请教,能不能采用重写SavaViewState,LoadViewState等方法使DropDownList的选定项回传服务器,应该怎么写,或者有其它解决办法吗?
向高人指教,谢谢!
...全文
1334 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
lz要干嘛?
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
有问题请先GOOGLE,BAIDU
panzi667 2007-09-14
  • 打赏
  • 举报
回复
学习中~
jx火狐 2007-09-04
  • 打赏
  • 举报
回复
收藏了...
liuyun1987 2007-09-01
  • 打赏
  • 举报
回复
<script type="text/javascript">
var xmlHttp;
function brandChange()
{
var f=document.form1;
var selectItem=f.brand.value;

if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();

}
else(window.ActiveXObject)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}

var url="brand.aspx?brandId="+selectItem;

xmlHttp.Open("POST",url,false);

xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
//document.write(xmlHttp.ResponseText);
model_complete(xmlHttp.ResponseText);
}
}
}

xmlHttp.send(false);
}

function model_complete(responsetext)
{
var returnStr = responsetext;
var xmlDom=new ActiveXObject("Microsoft.XmlDom");
xmlDom.loadXML(returnStr);
var newsItems=xmlDom.getElementsByTagName("Table");
document.getElementById("model").length=0;

for(var i=0;i<newsItems.length;i++)
{

var newsItem = newsItems[i];
var strID = newsItem.getElementsByTagName("ModelId")[0].text;
var strCity = newsItem.getElementsByTagName("ModelName")[0].text;
document.all("model").options.add(new Option(strCity,strID));
}

}
</script>
这是我写的一个选了手机品牌后相应手机型号联动的AJAX。供你参考。。
xingyunet 2007-08-31
  • 打赏
  • 举报
回复
支持一下..............!
学习中...............
xingyunet 2007-07-25
  • 打赏
  • 举报
回复
学习中..................
lindping 2007-07-25
  • 打赏
  • 举报
回复
当页面加载的时候,我估计是你在服务器端取数据赋值到dropdownlist的。我觉得比较优雅的写法是,在服务器端的pageload中把第一个dropdownlist的选中值都放在hidden input中,然后在客户端写javascript window.onload= function(){dropdownlist1.value=hidden input.value;}
(这个时候 这个dropdownlist应该能自动触发onchange事件,去加载第二个dropdownlist的数据项)

既然用了无刷新技术,这里我太明白你的页面为什么在点击保存以后页面会被重新加载。

如果页面一定要重新加载,server端的hidden input应该能保持它的值.这种写法代码简洁 逻辑清晰分明,我个人认为。
前端时间刚好用ajax写了5级的多选联动,采用类似的写法。
ACLOUD178 2007-07-18
  • 打赏
  • 举报
回复
ViewState 一下 Request.Form["DropDownList2"] 这样不就可以了
然后 POSTBACK的时候判断有无,有则加上
这里有个文章 无刷新三级联动菜单
http://www.cnblogs.com/asboy/archive/2007/05/05/AjaxPro.html
辉之不趣 2007-07-08
  • 打赏
  • 举报
回复
比较简单又比较笨的方法,用服务器控件 TextBox 储存其值,是用 JavaScript 赋给文本框,并将这个控件的 borderColor设为页面背景色,设width、height为 0,并在 body的onload事件中调用赋值函数,最好先判断一下
wangwang008 2007-07-03
  • 打赏
  • 举报
回复
学习中。
煊烨 2007-04-29
  • 打赏
  • 举报
回复
http://www.cnblogs.com/xuanye/archive/2007/02/07/642827.html
一个下拉联动控件的实现
li_shiye 2007-04-29
  • 打赏
  • 举报
回复
xmlHttp.open("POST", webFileUrl, false);
xmlHttp.send("");
result = xmlHttp.responseText;
  
if(result != "")
{
document.all("DropDownList2").length=0;
var piArray = result.split(",");
for(var i=0;i<piArray.length;i++)
{
var ary1 = piArray[i].toString().split("|");
document.all("DropDownList2").options.add(new Option(ary1[1].toString(),ary1 [0].toString()));
}
}

///一下服务端代码。。
string mystr = "";
if(ds.Tables[0].Rows.Count != 0)
{
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
mystr += "," + ds.Tables[0].Rows[i][0].ToString() + "|" + ds.Tables[0].Rows[i][1].ToString();
}
mystr = mystr.Substring(1);
}
this.Response.Write(mystr);

我这通过。。。
geek007 2007-04-29
  • 打赏
  • 举报
回复
ViewState 一个变量
ly_0205 2007-04-28
  • 打赏
  • 举报
回复
你遇到的问题可能与我曾经遇到的问题相似,
不过我不会Ajax,Ajax还是最近才知道这个东西,羞.. 我是继承DropDownList写的一个自定义控件,根据其他决定DropDownList里面的选项有哪些。选项的改变都是在客户端完成的,我的select下面的option是全部js生成的..

这种的话PostBack之后清空根本上的原因是因为DropDownList并没有Items,也就是说Render的时候并不会生成任何option,DropDownList本身的SelectedValue并没有用。(实际上并不是这样判断,似乎在Render之前就判断存不存在Value为SelectedValue的Item,没有的话Render时SelectedValue已经清空了。具体我忘了。)

我的问题解决方法是加一段初始脚本。在根据相关控件状态,初始化自定义控件的状态之后,设置自定义控件的值。

比如说我的自定控件根据DropDownList1的值改变选项,我加上一个脚本: "<script>DropDownList1.onchange();CustomControl.value = ...;</script>";
第一句是初始化自定义控件的选项,这个在DropDownList1的onchange里面完成了,第2句就是初始化自定义控件的值了。
CathySun118 2007-04-28
  • 打赏
  • 举报
回复
up

8,834

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 组件/控件开发
社区管理员
  • 组件/控件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧