asp.net 利用微软数据访问类库结合AjaxPro实现无刷新下拉框级联

简介: 1、新建一个web网站,添加如下几个dll引用。具体的dll文件可在如下地址下载:http://download.csdn.net/detail/taomanman/41677642、新建一个js文件夹,放jquery-1.4.1-vsdoc.js和jquery-1.4.2.min.js两个js文件。

1、新建一个web网站,添加如下几个dll引用。具体的dll文件可在如下地址下载:http://download.csdn.net/detail/taomanman/4167764


2、新建一个js文件夹,放jquery-1.4.1-vsdoc.js和jquery-1.4.2.min.js两个js文件。点击下载:http://download.csdn.net/detail/taomanman/4167768


3、配置Web.config文件,添加数据库连接字符串及AjaxPro的配置,如下代码:

<?xml version="1.0" encoding="utf-8"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细消息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <!--添加数据库连接字符串开始-->
  <connectionStrings>
    <add name="MyConnectionString"
     connectionString="Data Source=192.168.2.105;Initial Catalog=数据库名;User ID=sa;Password=sa" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <!--添加数据库连接字符串结束-->
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <!--添加ajaxpro开始-->
    <httpHandlers>
      <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
    </httpHandlers>
    <!--添加ajaxpro结束-->
  </system.web>

</configuration>

4、在Default.aspx页面中添加2个html控件select下拉框,添加js文件,这里主要是利用AjaxPro实现aspx页面访问aspx.cs中的方法,主要代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AjaxDemo.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>ajax方式无刷新级联下拉</title>
    <script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        //页面加载时执行函数
        $(function () {
            DDL_Init();
        });

        //加载下拉框
        function loadSelect(jsonObj) {
            if (jsonObj == "") {
                return '<option title="-1" selected="selected" value="请选择">请选择</option>';
            }
            jsonObj = eval("(" + jsonObj + ")");
            var jsonStr = "";
            $(jsonObj).each(function (key, value) {
                //[{"id": "2011","name": "2011年"}]
                //[{ "id": "2", "name": "第2期" }, { "id": "1", "name": "第1期"}]
                jsonStr += '<option value="' + this.id + '" title="' + (key - 1) + '">' + this.name + '</option>';
            });
            return jsonStr;
        }

        //下拉框恢复
        function resetSelect(selectStr) {
            return '<option title="-1" selected="selected">' + selectStr + '</option>';
        }

        $("#YearID").change(function () {
            var yearValue = $(this).attr("title").val();
            var issueStr;
            if (yearValue == "-1") {
                issueStr += loadSelect(getIssueNumList(yearValue));
            }
            $("#Year_IssumNum").html(issueStr);
        });

        //获得年份
        function getYearList() {
            //前台获取后台方法,获得值
            var obj = AjaxDemo.Default.getYearList();
            return obj.value;
        }

        //获得某个年份下的期
        function getIssueNumList(year) {
            var obj = AjaxDemo.Default.getIssueNumList(year + "");
            return obj.value;
        }

        //初始化下拉控件
        function DDL_Init() {
            var year = loadSelect(getYearList());
            //绑定年份
            $("#YearID").append(year);
            //绑定期号
            var issueNum = loadSelect(getIssueNumList($("#YearID option:first").val()));
            $("#Year_IssumNum").append(issueNum);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    年份:
    <select name="" class="year" id="YearID">
    </select>
    期号:
    <select name="" class="issueNum " id="Year_IssumNum">
    </select>
    </form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AjaxPro;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using System.Data.Common;
using System.Data;

namespace AjaxDemo
{
    public partial class Default : System.Web.UI.Page
    {
        SqlDatabase _db = new SqlDatabase(System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {

            }
            AjaxPro.Utility.RegisterTypeForAjax(typeof(Default));
        }

        [AjaxMethod()]
        public string getYearList()
        {
            string strSQL = "select distinct t.[year] from SeedlingCommentCountyInfo t  order by year desc";
            DbCommand dbcmd = this._db.GetSqlStringCommand(strSQL);
            DataSet ds = _db.ExecuteDataSet(dbcmd);
            string dateStr = "[";
            if (ds.Tables[0].Rows.Count > 0)
            {
                foreach (DataRow drDate in ds.Tables[0].Rows)
                {
                    dateStr += "{\"id\": \"" + drDate["year"].ToString() + "\",\"name\": \"" + drDate["year"].ToString() + "年\"},";
                }
                dateStr = dateStr.TrimEnd(',') + "]";
            }
            else
            {
                dateStr = "";
            }
            return dateStr;
        }

        [AjaxMethod()]
        public string getIssueNumList(string year)
        {
            string strSQL = "select distinct t.issueNum from SeedlingCommentCountyInfo t where year=" + year + " order by issueNum desc";
            DbCommand dbcmd = this._db.GetSqlStringCommand(strSQL);
            DataSet ds = _db.ExecuteDataSet(dbcmd);
            string issueNumStr = "[";
            if (ds.Tables[0].Rows.Count > 0)
            {
                foreach (DataRow drIssueNum in ds.Tables[0].Rows)
                {
                    issueNumStr += "{\"id\": \"" + drIssueNum["issueNum"].ToString() + "\",\"name\": \"第" + drIssueNum["issueNum"].ToString() + "期\"},";
                }
                issueNumStr = issueNumStr.TrimEnd(',') + "]";
            }
            else
            {
                issueNumStr = "";
            }
            return issueNumStr;
        }
    }
}




相关文章
|
19天前
|
网络协议 定位技术 网络安全
IPIP.NET-IP地理位置数据
IPIP.NET 是一家专注于 IP 地理位置数据的提供商,基于 BGP/ASN 数据与全球 800+ 网络监测点技术,提供高精度的 IPv4 和 IPv6 定位服务。其核心服务包括地理位置查询、详细地理信息和网络工具等,广泛应用于网络安全、广告营销、CDN 优化等领域。数据覆盖全球,支持多语言,每日更新确保实时性。IPIP.NET 提供 API 接口、离线数据库及多种语言 SDK,方便开发者集成使用。
113 0
|
6月前
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
96 2
|
7月前
|
SQL 存储 关系型数据库
C#一分钟浅谈:使用 ADO.NET 进行数据库访问
【9月更文挑战第3天】在.NET开发中,与数据库交互至关重要。ADO.NET是Microsoft提供的用于访问关系型数据库的类库,包含连接数据库、执行SQL命令等功能。本文从基础入手,介绍如何使用ADO.NET进行数据库访问,并提供示例代码,同时讨论常见问题及其解决方案,如连接字符串错误、SQL注入风险和资源泄露等,帮助开发者更好地利用ADO.NET提升应用的安全性和稳定性。
508 6
|
8月前
|
算法 Java 测试技术
java 访问ingress https报错javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
java 访问ingress https报错javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
|
8月前
|
API
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
|
8月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
137 1
|
9月前
|
开发框架 前端开发 JavaScript
基于SqlSugar的数据库访问处理的封装,支持.net FrameWork和.net core的项目调用
基于SqlSugar的数据库访问处理的封装,支持.net FrameWork和.net core的项目调用
|
9月前
|
开发框架 缓存 NoSQL
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
|
9月前
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
下一篇
oss创建bucket