您的位置:首页 > 其它

转载 ajax XML dataset

2009-01-10 14:42 232 查看
Ajax无刷新联动之XML
先讲一下本问的意思,就是用Ajax简单做一个二级联动,从数据库读取数据,转换成XML格式输入,然后Ajax接收实现无刷联动效果...

 

先看一下前台页面的JS代码:(为了方便Copy,代码中的行号取消了).

 

1. CreateXMLObj无可非议是创建xmlHttpRequest对象的,网上一搜一大堆,这个可以根据自己的习惯来写...

function CreateXMLObj()

{

    try {

      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (e) {

        try {

            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

        } catch (e2) {

            xmlHttp = false;

        }

    }

    if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {

      xmlHttp = new XMLHttpRequest();

    }

}
 

2.下面这个就是发送数据给后台,等待返回数据的了,看代码前先看张页面图片:

            ddlProcPath.DataSource = this.GetApprovalPathName();//从这里可以看出我的两组联动是一样的了吧,调用的方法根本就是同一个

            ddlProcPath.DataTextField = "RsKey";

            ddlProcPath.DataValueField = "RsCode";

            ddlProcPath.DataBind();

            ddlProcPath.Items.Insert(0, new ListItem("--请选择--", "-1"));

            ddlProcPath.Attributes.Add("onchange", "callServer(2)");

        }
 

 

上面的代码也就是同一个页面的前台和后台代码:

重点还是得看Ajax请求数据的页面(其实也很简单,只要得到一个xml格式就行了,当然如果你是调用的webservice,也是大同小异,因为webservice返回的也就是一个XML格式的文档):

来看看Selectappr.aspx页面的代码, 为了得到一个标准的XML格式,只需要保留第一行的Page指令就行了,其他的删除即可.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Selectappr.aspx.cs" Inherits="TopFounder.Web.Protals.BaseFrameWork.Selectappr" %>

 

在Selectappr.aspx.cs 中的我们只需要接收Ajax 传过来的参数,到数据库中找到 二级联动的数据,然后填充到DataSet中,在用XmlTextWriter 直接吧DS中的数据写出到页面

protected void Page_Load(object sender, EventArgs e)

        {

            if (Request.QueryString["apprid"] != null || Request.QueryString["apprid"].ToString() != "")

            {

                string procid = Request.QueryString["apprid"].ToString();//从GET请求中得到传过来的一级联动的VALUE

                DataSet ds = CommonHelper.GetAllPathNameForDs(procid); //到数据库中查找出数据,然后存放到DataSet中,因为DataSet导出XML最直接,有自带的方法,当然其他的也是可以的

                XmlTextWriter xtw = new XmlTextWriter(Response.OutputStream, System.Text.Encoding.UTF8);//这点要注意了,编码格式要正确不然中文是乱码,在AJAX接收的时候会接收不到乱码的,oDoc.loadXML(result);乱码的情况家DOM也是LOAD不到XML的....

                xtw.Formatting = Formatting.Indented;//这几句是格式的设置

                xtw.Indentation = 4;

                xtw.IndentChar = ' ';

                ds.WriteXml(xtw);     //这个就是吧XML写到Selectappr.aspx的页面中去了.....

                xtw.Flush();

                Response.End();

                xtw.Close();

            }

        }

也就这么多了,希望大家能看的明白,上班时间也就先这样了,不明白的在问我好了...................
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: