自己写的多级联动下拉框,省份部分有绑定数据
Ep_zone objZone = new Ep_zone();
Zone zone = new Zone();
sleSheng.DataSource = zone.GetProvince();
sleSheng.DataTextField = "ZONENAME";
sleSheng.DataValueField = "ZONE";
sleSheng.DataBind();
第一个问题:后面的下拉框就是用JS通过AJAX附加的,,这种情况下在后台获取不到值(代码见最后一段),自己推测是因为在前台附加,所以获取不到值,但是完全找不到改的方向。
第二个问题:最初用JS写的嵌套,所以用find("option").remove()可以清空所有子级的数据,现在只能清空下一级,这个要怎么修改呢?
JS部分:
//地址级联选择
function sleZone(zone, subZone) {
$.ajax({
type: "POST",
dataType: "json",
url: "ZoneListHandler.ashx",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
data: {
getmethod: "GetSubZone",
id: $("#" + zone + "").val()
},
success: function (record) {
$("#" + subZone + "").find("option").remove();
if (true == record.Successful) {
for (var i = 0; i < record.obj.length; i++) {
$("#" + subZone + "").append('<option value="' + record.obj[i].Zone + '">' + record.obj[i].Zonename + '</option>');
}
}
}
})
}
前台部分:
<span class="select-box size-MINI address">
<select id="sleSheng" class="select" runat="server" onchange="sleZone('sleSheng','sleShi');" onkeydown="KJkeydown('sleShi','txtRemark','form1');"></select>
</span> 省
<span class="select-box size-MINI address">
<select id="sleShi" class="select" runat="server" onchange="sleZone('sleShi','sleXianQu');" onkeydown="KJkeydown('sleXianQu','sleSheng','form1');"></select>
</span> 市
<span class="select-box size-MINI address">
<select id="sleXianQu" class="select" runat="server" onchange="sleZone('sleXianQu','sleZhenXiang');" onkeydown="KJkeydown('sleZhenXiang','sleShi','form1');"></select>
</span> 县、区
<span class="select-box size-MINI address">
<select id="sleZhenXiang" class="select" runat="server" onchange="sleZone('sleZhenXiang','sleCunShequ');" onkeydown="KJkeydown('sleCunShequ','sleXianQu','form1');"></select>
</span> 镇、乡、街道
<span class="select-box size-MINI address">
<select id="sleCunShequ" class="select" runat="server" onkeydown="KJkeydown('btnSave','sleZhenXiang','form1');"></select>
</span> 村、社区
后台部分:除了第一个sleSheng.value均获取不到值,Keys里只有三个
obj_organ.Zone = sleSheng.Value + sleShi.DataTextField + sleXianQu.DataValueField + sleZhenXiang.Attributes.Keys + sleCunShequ.Value;
你确定这 $("#" + zone + "").val()有值吗,最好打印看看,感觉这地方有问题
1、后台是获取不到AJAX后期添加的数据的,鄙人有个比较粗糙的方法,把你选择的值赋值到隐藏控件里面,后台再去获取;
2、加了 runat="server" 标记 ID号在最后渲染时会改变的,你看看是不是这个问题