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

来源:百度知道 编辑:UC知道 时间:2024/05/17 06:06:01
页面中有一个选择订单编号的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()

补充,你是用服务器按钮提交??这样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 ,你那里应该是数组吧
<