asp.net中的如何获得javascript控制的动态select的value

页面中有一个选择订单编号的select,还有50个空的产品编号的select,通过选择订单编号,调用AJAX方法在后台取得数据库中,该订单的所有对应的产品ID,再由jav... 页面中有一个选择订单编号的select,还有50个空的产品编号的select,通过选择订单编号,调用AJAX方法在后台取得数据库中,该订单的所有对应的产品ID,再由javascript中的回调函数增加到那50个select中!但是在保存信息的时候出现了问题!可能是因为javascript动态增加的关系,在后台取不到产品编号的value!请大家帮帮忙!!谢谢!下边是我的原代码!
<select id="sSOLid" runat="server" datasourceid="sqlSOID" datatextfield="ID" datavaluefield="ID" onchange="javascript:setEntryProductID(form1.sSOLid)" style="width: 153px" />//这是订单编号的select
<select id="sEntryProductID1" style="width: 100px" runat="server" onchange="javascript:getsodetails(form1.sSOLid,form1.sEntryProductID1,form1.tbEntryProductName1,form1.tbEntryProductType1,form1.tbEntryProductCasing1,form1.tbEntryProductSONumber1,form1.tbEntryProductWant1)"><option></option> </select>//这是产品编号的select,因为我javascript中都是写的公用方法所以传的参数比较多,因为这样可以很方便的重用!
string productid = ((HtmlSelect)(Page.FindControl("sEntryProductID" + i))).Value.ToString().Trim();
//这是我在后台循环中获得所选产品编号的代码!
function getsodetails(soid, pid, name, type, casing, son, pw ){
/*后边4个参数是控件名,为了方便回调赋值*/
var temp=0;
var id1=pid.id;
var id2=pid.value;
var tem=id1.length-1;
if(id2 != ""){
for(i=1;i<51;i++) {
if(document.getElementById(id1.substring(0,tem)+i).value ==id2) {temp+=1; }
}
}
else{alert("不可选择空值,请您重新选择或者删除本行!");}
if(temp > 1) {alert("您选择的有重复行,请重新选择!");}
else {InfoBridge.repertory_newEntry.getSODetails(soid.value, id2, name.id, type.id, casing.id, son.id, pw.id,CallBak_getsodetails); }
}
function CallBak_getsodetails(response){
var temp=response.value;
document.getElementById(temp[0]).value=temp[5];
document.getElementById(temp[1]).value=temp[6];
document.getElementById(temp[2]).value=temp[7];
document.getElementById(temp[3]).value=temp[8];
document.getElementById(temp[4]).value=temp[9];
}
展开
 我来答
开心小耀
2007-06-01 · 超过25用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:74.9万
展开全部
补充,你是用服务器按钮提交??这样htmlselect会重置..可以先用文本框保存相应的嫌掘值

我用这种方法可以输出产品编号
function setEntryProductID()
{
var preid = document.getElementById("ddlStyles");
InfoBridge.repertory_newEntry.getSOlist(preid.value, CallBak_setEntryProductID);
}
function CallBak_setEntryProductID(response)
{
if (response.value != null)
{
var ds = response.value;
if(ds != null && typeof(ds) == "object" && ds.Tables != null)
{

for(var i=0; i<ds.Tables[0].Rows.length; i++)
{
document.all("sEntryProductID"+(i+1)).length=0;
var name=ds.Tables[0].Rows[i].Name;//Name,ProductID是table中的字段,大小写区分
var id=ds.Tables[0].Rows[i].ProductID;
document.all("sEntryProductID"+(i+1)).options.add(new Option(name,id));
}
}
}
}

注:这里我返回的是DataSet ,你那里应该是数组吧

现在改成这样具体要历者吵实现什么??把后肢侍台ajax方法也贴出来研究下
贾涵闪良吉
2020-05-15 · TA获得超过3827个赞
知道大有可为答主
回答量:3097
采纳率:29%
帮助的人:227万
展开全部
补充,你嫌掘是用服务器按钮提交??这样htmlselect会重置..可以先用文本框保存相应的值
我用这种方历者吵法可以输出产品编号
function
setEntryProductID()
{
var
preid
=
document.getElementById("ddlStyles");
InfoBridge.repertory_newEntry.getSOlist(preid.value,
CallBak_setEntryProductID);
}
function
CallBak_setEntryProductID(response)
{
if
(response.value
!=
null)
{
var
ds
=
response.value;
if(ds
!=
null
&&
typeof(ds)
==
"object"
&&
ds.Tables
!=
null)
{
for(var
i=0;
i<ds.Tables[0].Rows.length;
i++)
{
document.all("sEntryProductID"+(i+1)).length=0;
var
name=ds.Tables[0].Rows[i].Name;/肢侍/Name,ProductID是table中的字段,大小写区分
var
id=ds.Tables[0].Rows[i].ProductID;
document.all("sEntryProductID"+(i+1)).options.add(new
Option(name,id));
}
}
}
}
注:这里我返回的是DataSet
,你那里应该是数组吧
现在改成这样具体要实现什么??把后台ajax方法也贴出来研究下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式