asp.net+JSON+AJAX(基于prototype1.4)做无刷新的2级DropDownList


JSON的数据格式:{"xx":"xx1","yy":[{"yy1":"yyy1"},{"yy2":"yyy2"}]}

后台部分:(合成JSON数据格式)

//这是获取根目录
public string getRootTree()
{

using(SqlDataReader dr=SqlHelper.ExecuteReader(conn,System.Data.CommandType.Text,"select * from MMenu where MParentID=0"))
{
sb.Append("{""region"":[");
while(dr.Read())
{
sb.Append("{""");
sb.Append("MID");
sb.Append(""":""");
sb.Append(dr["MID"].ToString());
sb.Append(""",""");
sb.Append("MName");
sb.Append(""":""");
sb.Append(dr["MName"].ToString());
sb.Append(""",""");
sb.Append("MParentID");
sb.Append(""":""");
sb.Append(dr["MParentID"].ToString());
sb.Append("""},");
}
sb.Append("]");
return sb.ToString().Substring(0,sb.ToString().Length-2)+"]}";
}

//根据ID获取下级的数据

public string getSubTree(int MID)
{
using(SqlDataReader dr=SqlHelper.ExecuteReader(conn,System.Data.CommandType.Text,"select * from MMenu where MParentID="+MID))
{
sb.Append("{""region"":[");
while(dr.Read())
{
sb.Append("{""");
sb.Append("MID");
sb.Append(""":""");
sb.Append(dr["MID"].ToString());
sb.Append(""",""");
sb.Append("MName");
sb.Append(""":""");
sb.Append(dr["MName"].ToString());
sb.Append(""",""");
sb.Append("MParentID");
sb.Append(""":""");
sb.Append(dr["MParentID"].ToString());
sb.Append("""},");
}
sb.Append("]");
return sb.ToString().Substring(0,sb.ToString().Length-2)+"]}";
}
}

前台部分:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<html>
<head>
<title>select</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<script src=js/prototype-1.4.0.js></script>
<script>
function getJSON()
{
var myoptions={
parameters:"",
method:"get",
onSuccess:function(res){
var myData=eval("("+res.responseText+")");
myData.region.each(function(xx){
$("root").options.add(new Option(xx.MName,xx.MID));
}
);

}
}
new Ajax.Request("jsonSelect.aspx?action=root&s"+Math.random(),myoptions);
}

function getSub(id)
{
var myoptions={
parameters:"subID="+id,
method:"get",
onSuccess:function(res){
var myData=eval("("+res.responseText+")");
$("sub").options.length=1;
myData.region.each(function(xx){

$("sub").options.add(new Option(xx.MName,xx.MID));
}
);
}
}
new Ajax.Request("jsonSelect.aspx?action=sub&s"+Math.random(),myoptions);
}
</script>
</head>
<body οnlοad=getJSON()>

<form id="Form1" method="post" runat="server">
<select name="a" id="root" onChange="getSub(this.value)">
<option value="" selected>-----请选择类别-----</option>

</select>
<select name="a" id="sub" onChange="getSub(this.value)">
<option value="" selected>-----请选择类别-----</option>

</select>
</form>

</body>
</html>

转载于:https://www.cnblogs.com/xiongeee/archive/2008/10/18/1314243.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET中的DropDownList控件可以通过绑定数据源实现二联动效果。下面是一个使用C#代码实现的示例: 首先,需要在页面上定义两个DropDownList控件,分别表示一和二选项: ``` <asp:DropDownList ID="ddlFirstLevel" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlFirstLevel_SelectedIndexChanged"> </asp:DropDownList> <asp:DropDownList ID="ddlSecondLevel" runat="server"> </asp:DropDownList> ``` 在代码后台,我们需要在Page_Load事件中绑定一选项的数据源,并在一选项的选中事件中动态绑定二选项的数据源: ``` protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { // 绑定一选项的数据源 ddlFirstLevel.DataSource = GetFirstLevelData(); ddlFirstLevel.DataTextField = "Name"; ddlFirstLevel.DataValueField = "ID"; ddlFirstLevel.DataBind(); // 绑定二选项的初始数据源 ddlSecondLevel.DataSource = GetSecondLevelData(0); // 初始时显示第一个一选项的二选项 ddlSecondLevel.DataTextField = "Name"; ddlSecondLevel.DataValueField = "ID"; ddlSecondLevel.DataBind(); } } protected void ddlFirstLevel_SelectedIndexChanged(object sender, EventArgs e) { // 重新绑定二选项的数据源,根据选中的一选项 int firstLevelID = Convert.ToInt32(ddlFirstLevel.SelectedValue); ddlSecondLevel.DataSource = GetSecondLevelData(firstLevelID); ddlSecondLevel.DataTextField = "Name"; ddlSecondLevel.DataValueField = "ID"; ddlSecondLevel.DataBind(); } // 获取一选项的数据源 private DataTable GetFirstLevelData() { // 从数据库或其他途径获取一选项的数据源 // 返回的DataTable需要包含ID和Name两列,分别表示一选项的ID和名称 } // 获取二选项的数据源 private DataTable GetSecondLevelData(int firstLevelID) { // 根据一选项的ID查询数据库或其他途径获取相应的二选项数据源 // 返回的DataTable需要包含ID和Name两列,分别表示二选项的ID和名称 } ``` 以上代码使用了两个DataTable作为示例的数据源,实际使用时需要根据业务需求自行修改数据源的获取逻辑,并将获取到的数据绑定到DropDownList控件上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值