随便问个问题,关于ajax联动的
页面上已经有一个DropDownList了,我用脚本在该DropDownList中生成了几个选项。生成方式如下:
var ddl2 = document.getElementById("DropDownList2");
ddl2.options.length = 0;
for(var k=0;k<10;k++)
{
var oOption = document.createElement("OPTION");
ddl2.options.add(oOption);
oOption.innerText = k;
oOption.value = k;
}
这样就在DropDownList中生成了一些选项。
现在我已经选中了一个选项,可是为什么我在后台用this.DropDownList2.SelectedValue确取不到我选择值呢?
谁能给我说说为什么!
还有为什么用脚本将一个TextBox赋值,在后台就能用this.TextBox1.Text取到呢?
顺便祝咱的卫星发射成功!!呵呵。。。
[解决办法]
以前碰到没深究过,选择的时候将value值赋给一个hidden,后台在hidden中取该value值
[解决办法]
Request.Form["DropDownList2"];
[解决办法]
因为控件的视图状态没有改变,所以用selectedValue取不到,可以直接取Post数据
[解决办法]
跟autopsotback属性有关系吗?
佩服楼主,我用的是现成的ajax toolkit做的
看来得想楼主学习
学习DOM和ajax机理了
[解决办法]
鼎
[解决办法]
顶,能解决的方法太多,楼上都有讲到,
[解决办法]
因为DropDownList解析到前台就变成了select了,这是html控件,没有runat=server标记
所以改变其的值后台并不能知道,而TextBox本身就是一个服务器端控件,前台改了值后台理所当然
就知道了,所以关键在于是否有runat=server标记
[解决办法]
AJAX 联动? AJAX方法呢? AJAX实现客户端与服务器端的数据交换 在JS控制显示
[解决办法]
以前也遇到过,后来将value值赋给一个hidden才能取到。
[解决办法]
因为dropdownlist是用javascript赋的值
实际html代码option选项是不存在的
要想用C#取值,只能在取值前将selectValue赋给hidden对象
然后从hidden中获取
[解决办法]
还有,
var oOption = document.createElement("OPTION");
LZ这样写firefox是不支持的
ddl2.options[k]=new Option(k,k);
[解决办法]
<script language="javascript" type ="text/javascript">
var xmlHttp;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();
}
}
function updateTotal()
{
createXMLHttpRequest();
var NetWork_ID=document.frmCall_Customer.ddl_NetWork.options[document.frmCall_Customer.ddl_NetWork.selectedIndex].text;
document.getElementById("hid_Institution").value=NetWork_ID;
var frm=document.forms[0];
var type_code=0;
var url="CallBack.aspx? id="+NetWork_ID;
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=doUpdate;
xmlHttp.send();
return false;
}
function doUpdate()
{
if(xmlHttp.readyState==4)
{
var result=xmlHttp.responseText;
document.getElementById("ddl_Institution").length = 0;
document.getElementById("ddl_Institution").options.add(new Option("请选择","0"));
var allArray = result.split(",");
for(var i=0;i<allArray.length;i++)
{
var thisArray = allArray[i].split("|");
document.getElementById("ddl_Institution").options.add(new Option(thisArray[1].toString(),thisArray[0].toString()));
}
}
}
</script>
在第一个onchange事件里面写updateTotal();
在传递页面page_Load
string NetWork_ID;
NetWork_ID = Request.QueryString["id"].ToString();
DataTable dt = cls_Customer.QueryDDLTable("GetAll_Network_Institution_vw", "NetWork_ID", NetWork_ID);
int i;
i = dt.Rows.Count;
for (int j = 0; j <i; j++)
{
//构建成定义的字符串格式,以便在js中split
Response.Write(dt.Rows[j][0].ToString() + "|" + dt.Rows[j][1].ToString() + ","
}
我正在用。。是绝对好用的。。
[解决办法]
后台取值方法:Request.Form["DropDownList2"].ToString();
[解决办法]
你在哪个阶段添加选项?你在客户端添加的选项,服务器端是不知道的(因为PostBack仅发送选中的值),因此服务器端的DropDownList自然无法正确识别添加选项后选择的值,也就无法正确给出SelectedValue了。