登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

.NET中一般处理程序(ashx)在Ajax中的使用--下拉列表的动态级连  

2009-08-10 16:10:46|  分类: .NET/C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

NET框架中有一个文件类型是一般处理文件(.ashx)。可以在ajax开发中作为服务器端使用。特别是当在请求停留在一个页面的时候,下面举个例子--实现html下拉列表的级连更新。

(1)ddlInnerJoin.aspx代码:

<head runat="server">
    <title>无标题页</title>
    <script type ="text/javascript" src="ddlInnerJoin.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <select id="major" onchange ="startRequest();">
            <option value ="1">软件技术</option>
            <option value ="2" >网络技术</option>
        </select>
        <select id="class">
        </select>
    </div>
    </form>
</body>

(2)ddlInnerJoin.js代码:

var xmlHttp;
var requesttype="";
    function createXmlHttp()
    {
    if(window.XMLHttpRequest)
    {
        xmlHttp=new XMLHttpRequest();//mozilla浏览器
    }
    else if(window.ActiveXObject)
    {
        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");//IE旧版本
        }
        catch(e)
        {
        }
        try
        {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");//IE新版本
        }
        catch(e)
        {
        }
        if(!xmlHttp)
        {
            window.alert("不能创建XMLHTTPREQUEST对象!");
            return false;
        }
    }
}
function startRequest()
{
    createXmlHttp();
    //使用GET方式
    var url="ddlInnerJoin.ashx?major="+document.getElementById("major").options.value;
    xmlHttp.open("GET",url,true);
    xmlHttp.onreadystatechange=bindclass;
    xmlHttp.send(null);
   
}
function bindclass()
{
    if(xmlHttp.readyState==4)
    {
        if(xmlHttp.status==200)
        {
              var selclass=document.getElementById("class");
              //如果被动(被激发的)下拉有内容,要首先清空
              while(selclass.hasChildNodes())
              {
                 var node=selclass.children(0)
                 selclass.removeChild(node);
              }
              //获取响应内容        
              var result=xmlHttp.responseText;
              //分割以方便绑定
              var optiontext=result.split(' ');
              //将分割后的内容绑定到被动下拉列表
              for(var i=0;i<optiontext.length;i++)
              {
                    var optionnode=document.createElement("OPTION");
                    optionnode.text=optiontext[i];
                    selclass.add(optionnode);
              }
        }
    }
}

(3)ddlInnerJoin.ashx代码:

<%@ WebHandler Language="C#" Class="ddlInnerJoin" %>
using System;
using System.Web;
//由于要访问数据库,引入命名空间
using System.Data.SqlClient;
using System.Data;
public class ddlInnerJoin : IHttpHandler {
   
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string majorid = context.Request.Params["major"].ToString().Trim();
        string major = "";
        //避免不识别汉字
        if (majorid == "1")
        {
            major = "软件技术";
        }
        else if (majorid == "2")
        {
            major = "网络技术";
        }
        //从数据库提取数据
        SqlConnection conn = new SqlConnection("server=.;database=Tuition;uid=sa;pwd=sa;");
        SqlDataAdapter da = new SqlDataAdapter("select classname from dictblclass where classname like '" + major + "%'", conn);
        DataSet ds = new DataSet();
        da.Fill(ds);
        //定义响应文本的格式,以返回
        string result = "";
        foreach (DataRow row in ds.Tables[0].Rows)
        {
            result +=row[0].ToString().Trim() + " ";
        }
        context.Response.Write(result.Trim ());
        //context.Response.Write("Hello World");
    }

    public bool IsReusable {
        get {
            return false;
        }
    }
}

  评论这张
 
阅读(1100)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018