这个问题谁遇到过?——给后台二级联动(省市赋值)?——在线等待 页面上有个一个二级联动,是省和市,我现在要在后台给它赋值,但是不能直接复制,如果直接赋值的话的,它的联动效果就失效了,有没有人处理过类似的事情? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 既然级联肯定是后台赋值,难道还把所有数据加载到页面用Js来控制啊!不清楚你说的直接赋值是什么意思。首先,绑定省的数据源,添加省的SelectedIndexChanged事件。同时设定AutoPostBack属性为True,在事件中获取选择的省的值,然后再根据这个值去获取市的数据源。如此而已。再者提醒下,问问题请讲清楚什么情况下,出现什么错误。有必要的贴出关键代码。还有,别搞错别字! 省份你可以直接加好吧,然后在省份下拉中加事件,当选中某一项的时候动态的给市级下拉列表循环加值你先循环创建市级项,再用add或者insert方法直接加进去就好了 protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { int index =Convert.ToInt32(dlBranchNames.SelectedValue); //this.DataSource = BLL.DepartInfoManager.GetChildById(index); IList<DepartInfo> departInfos = BLL.DepartInfoManager.GetChildById(index); drDepart.Items.Clear(); foreach (var item in departInfos) { ListItem li = new ListItem(item.DepartName,item.DepartId.ToString()); this.drDepart.Items.Add(li); } } dropdownlist联动<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <div> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:DropDownList ID="ddlLB" runat="server" Width="15%" AutoPostBack="True" OnSelectedIndexChanged="ddlLB_SelectedIndexChanged"> </asp:DropDownList> <asp:DropDownList ID="ddlChild" runat="server" Width="20%"> </asp:DropDownList> </ContentTemplate> </asp:UpdatePanel> </div> protected void ddlLB_SelectedIndexChanged(object sender, EventArgs e) { if(this.ddlLB.SelectedValue!=null) { } }ddlLB可赋值 province.Value = db.Rows[0]["Province"].ToString();页面代码 <select style="WIDTH: 100px" onchange="setcity();" id="province" runat="server" name="province" > <option value="">--请选择省份--</option> <option value="上海">上海</option> <option value="北京">北京</option> <option value="天津">天津</option> <option value="重庆">重庆</option> <option value="河北">河北</option> <option value="山西">山西</option> <option value="内蒙古">内蒙古</option> <option value="辽宁">辽宁</option> <option value="吉林">吉林</option> <option value="黑龙江">黑龙江</option> <option value="江苏">江苏</option> <option value="浙江">浙江</option> <option value="安徽">安徽</option> <option value="福建">福建</option> <option value="江西">江西</option> <option value="山东">山东</option> <option value="河南">河南</option> <option value="湖北">湖北</option> <option value="湖南">湖南</option> <option value="广东">广东</option> <option value="广西">广西</option> <option value="海南">海南</option> <option value="四川">四川</option> <option value="贵州">贵州</option> <option value="云南">云南</option> <option value="西藏">西藏</option> <option value="陕西">陕西</option> <option value="甘肃">甘肃</option> <option value="宁夏">宁夏</option> <option value="青海">青海</option> <option value="新疆">新疆</option> <option value="香港">香港</option> <option value="澳门">澳门</option> <option value="台湾">台湾</option> <option value="国外城市">国外城市</option> </select> <select style="WIDTH: 100px" name="city" id="city" runat="server"> <option value="">--请选择城市--</option> </select> 后代赋值: 这样的话,省的值是赋值进去了,但是city的值赋值不进去,因为它的值在JS里面。这样的话我的问题表述清楚了吧? $("#province").change(function(){var provinceValue=$("#province").val();var url = "../Handler/Logic.ashx?m=getTableConfig&c=" + provinceValue;$.ajax({ //调用jquery的ajax方法 type: "POST", //设置ajax方法提交数据的形式 url: encodeURI(url), async: false, //ajax同步 success: function(msg) { for (var i = 0; i < st.Rows.length; i++) { $("#city").append("<option value='" + st.Rows[i].市+ "'>" + st.Rows[i].市+ "</option>"); } }, error: function(XMLHttpRequest, textStatus, errorThrown) { //错误处理 } }}); 楼上的代码中var url = "../Handler/Logic.ashx?m=getTableConfig&c=" + provinceValue;这句是什么意思? var url = "../Handler/Logic.ashx?m=getTableConfig&c=" + provinceValue;是你自己的方法页面,后面的m=getTableConfig 是方法名,c=" + provinceValue是参数,这个要你自己在你的后台页面里面处理 provinceValue 后台处理了,能直接传到前台的jquery里面么? provinceValue是前台页面得到的值,传到后台方法里面,再返回结果,绑定市可能描述的不好 这是Login.ashx页面 用.aspx.cs的也可以<%@ WebHandler Language="C#" Class="Logic" %>using System;using System.Web;using System.Collections.Generic;using eBest.MQS.BusinessLogic.Manager;using System.Text.RegularExpressions;using System.Data;using eBest.MQS.Json;public class Logic : IHttpHandler{ public void ProcessRequest(HttpContext context) { //这里是处理我传过来的参数,第一个参数是方法名,后面的参数都是这个方法的参数,如果你只有一个绑定下拉列表的方法就直接写在里面就可以了,而且这里的方法名必须大写 context.Response.ContentType = "text/plain"; if (context.Request.QueryString.Count < 1) { context.Response.Write("非法调用."); return; } string method = context.Request.QueryString[0].ToUpper(); List<string> args = new List<string>(); for (int i = 1; i < context.Request.QueryString.Count; i++) { args.Add(context.Request.QueryString[i]); } try { context.Response.Write((string)GetType().GetMethod(method, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public).Invoke(this, args.ToArray())); } catch (Exception er) { context.Response.Write(er.Message); } }//方法名必须大写 public string GETTABLECONFIG(string id) { DataTable dt = new eBest.MQS.BusinessLogic.TableConfigManager().tableConfig(id).Tables[0]; return eBest.MQS.Json.JsonLibrary.ToJson(dt); } public bool IsReusable { get { return false; } }} 解决了,用的是更简单的方法,在赋值之前在后台先调用一下JS里面的联动方法,这样联动的效果就出来了,然后再匹配城市的值,给它赋值进去就OK了。不过还是要感谢你的代码,受教了 蜜MM 我也不会...Help Me! 关于配置IIS上配2个网站的问题 用linq(或EF)做web项目,该用什么设计模式 TreeView数据绑定问题???? 如何得到ascx中控件的对象引用???????? SQL报错:键列信息不足或不正确,更新影响到多行,是什么错? 问个时间格式问题 我现在有一个服务器,想开发一个邮件系统,但是如何实现邮箱申请的功能?需要什么东西吗? 如何用JS 实现拖动表格里的列或者行的宽度 如果份不够再加阿 ASP.NET AJAX BUG问题 弹出对话框无效 求一条sql语句 获取每年每月的统计 如何用数据控件代替
不清楚你说的直接赋值是什么意思。
首先,绑定省的数据源,添加省的SelectedIndexChanged事件。同时设定AutoPostBack属性为True,
在事件中获取选择的省的值,然后再根据这个值去获取市的数据源。如此而已。
再者提醒下,问问题请讲清楚什么情况下,出现什么错误。有必要的贴出关键代码。还有,别搞错别字!
你先循环创建市级项,再用add或者insert方法直接加进去就好了
{
int index =Convert.ToInt32(dlBranchNames.SelectedValue);
//this.DataSource = BLL.DepartInfoManager.GetChildById(index);
IList<DepartInfo> departInfos = BLL.DepartInfoManager.GetChildById(index);
drDepart.Items.Clear();
foreach (var item in departInfos)
{
ListItem li = new ListItem(item.DepartName,item.DepartId.ToString());
this.drDepart.Items.Add(li);
}
}
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddlLB" runat="server" Width="15%" AutoPostBack="True" OnSelectedIndexChanged="ddlLB_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="ddlChild" runat="server" Width="20%">
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
</div>
protected void ddlLB_SelectedIndexChanged(object sender, EventArgs e)
{
if(this.ddlLB.SelectedValue!=null)
{ }
}
ddlLB可赋值
<select style="WIDTH: 100px" onchange="setcity();" id="province" runat="server" name="province" >
<option value="">--请选择省份--</option>
<option value="上海">上海</option>
<option value="北京">北京</option>
<option value="天津">天津</option>
<option value="重庆">重庆</option>
<option value="河北">河北</option>
<option value="山西">山西</option>
<option value="内蒙古">内蒙古</option>
<option value="辽宁">辽宁</option>
<option value="吉林">吉林</option>
<option value="黑龙江">黑龙江</option>
<option value="江苏">江苏</option>
<option value="浙江">浙江</option>
<option value="安徽">安徽</option>
<option value="福建">福建</option>
<option value="江西">江西</option>
<option value="山东">山东</option>
<option value="河南">河南</option>
<option value="湖北">湖北</option>
<option value="湖南">湖南</option>
<option value="广东">广东</option>
<option value="广西">广西</option>
<option value="海南">海南</option>
<option value="四川">四川</option>
<option value="贵州">贵州</option>
<option value="云南">云南</option>
<option value="西藏">西藏</option>
<option value="陕西">陕西</option>
<option value="甘肃">甘肃</option>
<option value="宁夏">宁夏</option>
<option value="青海">青海</option>
<option value="新疆">新疆</option>
<option value="香港">香港</option>
<option value="澳门">澳门</option>
<option value="台湾">台湾</option>
<option value="国外城市">国外城市</option>
</select>
<select style="WIDTH: 100px" name="city" id="city" runat="server">
<option value="">--请选择城市--</option>
</select> 后代赋值:
$("#province").change(function(){
var provinceValue=$("#province").val();
var url = "../Handler/Logic.ashx?m=getTableConfig&c=" + provinceValue;
$.ajax({ //调用jquery的ajax方法
type: "POST", //设置ajax方法提交数据的形式
url: encodeURI(url),
async: false, //ajax同步
success: function(msg) {
for (var i = 0; i < st.Rows.length; i++) {
$("#city").append("<option value='" + st.Rows[i].市+ "'>" + st.Rows[i].市+ "</option>");
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
//错误处理
}
}
});
这句是什么意思?
var url = "../Handler/Logic.ashx?m=getTableConfig&c=" + provinceValue;
是你自己的方法页面,后面的m=getTableConfig 是方法名,c=" + provinceValue是参数,这个要你自己在你的后台页面里面处理
provinceValue是前台页面得到的值,传到后台方法里面,再返回结果,绑定市
可能描述的不好
using System.Web;
using System.Collections.Generic;
using eBest.MQS.BusinessLogic.Manager;
using System.Text.RegularExpressions;
using System.Data;
using eBest.MQS.Json;public class Logic : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//这里是处理我传过来的参数,第一个参数是方法名,后面的参数都是这个方法的参数,如果你只有一个绑定下拉列表的方法就直接写在里面就可以了,而且这里的方法名必须大写
context.Response.ContentType = "text/plain";
if (context.Request.QueryString.Count < 1)
{
context.Response.Write("非法调用.");
return;
} string method = context.Request.QueryString[0].ToUpper();
List<string> args = new List<string>();
for (int i = 1; i < context.Request.QueryString.Count; i++)
{
args.Add(context.Request.QueryString[i]);
} try
{
context.Response.Write((string)GetType().GetMethod(method, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public).Invoke(this, args.ToArray()));
}
catch (Exception er)
{
context.Response.Write(er.Message);
}
}//方法名必须大写
public string GETTABLECONFIG(string id)
{
DataTable dt = new eBest.MQS.BusinessLogic.TableConfigManager().tableConfig(id).Tables[0];
return eBest.MQS.Json.JsonLibrary.ToJson(dt);
} public bool IsReusable
{
get
{
return false;
}
}}