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;
        }
    }
}




相关文章
|
1月前
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
8 0
|
1月前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据
9 0
|
2月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
67 0
|
4月前
|
Oracle 关系型数据库 数据管理
.NET医院检验系统LIS源码,使用了oracle数据库,保证数据的隔离和安全性
LIS系统实现了实验室人力资源管理、标本管理、日常事务管理、网络管理、检验数据管理(采集、传输、处理、输出、发布)、报表管理过程的自动化,使实验室的操作人员和管理者从繁杂的手工劳作中解放出来,提高了检验人员的工作效率和效益,降低了劳动成本和差错发生率。
|
6月前
|
前端开发 JavaScript
.net core 前端传递参数有值 后端接收到的数据却是null
1、问题分析 在做接口测试时,偶然出现了前端输出有值,但是后端断点调试时却出现接收参数总是为null的情况 2、解决办法 前端打印log,看前端的每一个传值的数据类型,与后端请求参数类进行认真的一一比对 小技巧: ① 直接打印调用接口的传参值的数据类型,例如 console.log(type of this.form.name) --string console.log(type of this.form.age) --number 打印的数据类型与后端接口的参数类比对,查出不对应的类型 ② 关于非必填的值,默认传值可能出现空字符串(' ')、NaN值(Not a Number
99 0
|
6月前
|
SQL 开发框架 监控
|
7月前
|
JSON 数据格式
.NET Core - 配置绑定:使用强类型对象承载配置数据
.NET Core - 配置绑定:使用强类型对象承载配置数据
|
9月前
|
数据库 C#
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
C#,.net,winform导入Excel功能以及下载Excel文件到本地,并使用SqlBulkCopy把DataTable类型的数据写入到sqlserver数据库中
218 0
|
12月前
|
Web App开发
.Net Core下使用HtmlAgilityPack解析采集互联网数据
.Net Core下使用HtmlAgilityPack解析采集互联网数据
90 0
|
SQL 开发框架 .NET
在ASP.NET中使用ListView控件对数据进行显示、分页和排序
在ASP.NET中使用ListView控件对数据进行显示、分页和排序
在ASP.NET中使用ListView控件对数据进行显示、分页和排序