¡¡XiaoHui.Net Ц»ã³ÌÐòÔ±ÂÛ̳ ¡ú Êý¾Ý¿â Database

   [ת]AJAX DataSetµÄʹÓÃÐĵÃ


Ò³: [1]

ajaxtoday2006-12-18 03:26
[ת]AJAX DataSetµÄʹÓÃÐĵÃ

AJAX DataSetµÄʹÓÃÐĵÃ

×÷ÕߣºÓñºø±ù

        ÎÞÂÛÊÇVB¡¢Delphi¡¢.NET»¹ÊÇJava£¬¶¼ÓÐÌṩ¶ÔÊý¾Ý½á¹û¼¯µÄ²Ù×÷£¬ÓÐÁËÊý¾Ý½á¹û¼¯£¬ÎÒÃÇÖ»ÐèҪʹÓýá¹û¼¯µÄ·½·¨Òƶ¯¼Ç¼£¬»ñÈ¡¼Ç¼×Ö¶ÎÊý¾Ý£¬ÔÙ½áºÏ½çÃæ£¬¾Í¿ÉÒÔºÜÈÝÒ×µØÍê³ÉÒ»¸öÊý¾Ý¿âÓ¦Óõıà³Ì£¬ÏÖÔÚ¶¼Á÷ÐÐÓÃAJAX×ö»ùÓÚwebµÄϵͳÁË¡£
ÀÏ´ó¾ö¶¨Ð°æÒªÓÃAJAXÀ´×ö£¬¸øÁËÎÒÃÇÓÃAJAX×öһЩÊÔÑéºÍÔ­Ð͵ÄÈÎÎñ£¬¿ÉÊǵ±ÎÒÃǵļ¼Êõ×éÔÚÔ¤ÑÐʱ£¬²Å·¢ÏÖµ½ÁËwebÉÏÍêÈ«²»ÊÇÄÇô»ØÊÂѽ£¬½ö½öͨ¹ýform±íµ¥À´²Ù×÷ºÍÌá½»Êý¾ÝҪʵÏÖÎÒÃǵÄÉ豸¹ÜÀíÕæµÄºÜÂé·³£¬ÒÔǰ¶¼ÊÇÓÃdelphiÈý²ã½á¹¹£¬ÓÐClientDataSet£¬ÓÐDCOM£¬MIDAS£¬»¹ÓÐÎÒÃÇ×î°®µÄDEVϵÁпؼþ£¬½çÃæÒÔ¼°Êý¾ÝµÄ¶ÁÈ¡£¬²Ù×÷£¬±£´æ¶¼ÊDz»ÐèҪ̫¶à³ÌÐòµÄ£¬ÎÒÃÇ»¹»ýÀÛÁ˲»ÉÙ¿ò¼ÜºÍͨÓÃÀàÄØ¡£
Á˽âÁËһЩAJAX¿ò¼Ü£¬´ó¶àÊÇÖ»Ö§³ÖjavaµÄ£¬Õâ´ÎÎÒÃÇÒªÓÃC#£¬Ò²ÓÐÉÙÊý.NETµÄAJAX¿ªÔ´µÄÏîÄ¿£¬¹¦ÄܾÍÊÇЩ¿ò¼ÜºÍһЩ²»ÍêÕûµÄÀ࣬żºÍ²Ë¸ç¡¢°¢ÀǸãÁ˼¸Ì죬»¹ÊÇûÓдîºÃÒ»¸öÄܹ»ºÜºÃÖ§³ÅÎÒÃÇÏîÄ¿¿ª·¢µÄ»ù´¡£¬¿ÉÄÜÎÒµÄjsºÍhtml»ù´¡Ì«²îÁË£¬ºóÀ´°¢ÀǾÓÈ»ÔÚÍøÉÏ·¢ÏÖÓÐAJAXµÄWebShop£¬ÏÂÁË¿´ÁË£¬¾ÓÈ»·Ç³£Ïñdelphi£¬Ò²ÓÐDataSet£¬»¹ÓкܶàÊý¾Ý¸ÐÓ¦µÄ¿Ø¼þÏñDBGridʲôµÄ£¬ÊÔÁËһϣ¬·¢ÏÖÕâ¸öDataSetȷʵÀ÷º¦£¬¾¹È»ÓÃjavascriptʵÏÖÁËÒÔǰµÄClientDataSet£¬¶øÇÒÓëÊý¾Ý¸ÐÓ¦¿Ø¼þµÄʹÓÃÒ²ÑØÏ®ÁËDelphiµÄģʽ£¬ÓÚÊǾö¶¨Ê¹ÓÃËü£¬¼òµ¥µÄÓ¦ÓÃÒ²ºÜÈÝÒ×£¬ÄǸö¹¤¾ßÌṩ¿ÉÊÓ»¯µÄ¿ª·¢·½Ê½£¬Ò²ÓÐʾÀý£¬²»¹ýÕæÕý¿ª·¢ÆðÀ´£¬ÔÚʹÓùý³ÌÒ²Óöµ½ºÃ¶àÎÊÌ⣬ÐÒºÃÕâ¸ö¹¤¾ßµÄ¿ª·¢ÉÌÓÐÔÚÏ߿ͷþ£¬ÓÐЩÉîÈëʹÓõŦÄܾÍÖ±½ÓÕÒËûÃÇÎÊ£¬ÎÒÃǵÄÉ豸¹ÜÀíϵͳµÄÔ­ÐÍÖ»ÓÃÁË15Ìì¾Í´î½¨³öÀ´À²£¬AJAXȷʵÀ÷º¦£¬¹¦ÄÜÉϺͲÙ×÷·½±ãÐÔ±ÈÒÔǰµÄasp³ÌÐò²»ÖªµÀºÃÄÄÈ¥ÁË£¬¹þ¹þ¡£ºÃÁË£¬ÑÔ¹éÕýÌ⣬ÎÒÃÇÔÚ×öÔ­Ð͹ý³ÌÖÐÓõ½×î¶àµÄ¾ÍÊÇDataSet£¬ÓеÄʱºòûÓÐʹÓÃÊý¾Ý¸ÐÓ¦¿Ø¼þ£¬ÓеĽçÃæÓÃÁË£¬ÎҾͰÑʹÓÃDataSetµÄһЩÐĵøø´ó¼Ò½²½²£º
Õâ¸öDataSetÊÇÒ»¸ö¿Í»§¶ËµÄAJAXÊý¾Ý¼¯£¬ÍêÈ«ÊÇ´¿jsµÄʵÏÖ£¬½çÃæÓëºǫ́µÄÊý¾Ý½»»¥»ù±¾ÉÏÈ«ÊÇͨ¹ýËü½øÐе쬰üÀ¨Êý¾ÝµÄ¶ÁÈ¡ºÍÌá½»¡£ÌýËûÃÇ˵ÊÇÓÃjs²Ù×ÝXML£¬Äܹ»½øÐзÖÒ³¡¢ÑùʽÎÞˢвéѯÊý¾Ý¡¢»¹ÓÐÈç¹ûÔöɾ¸ÄÁËÉÙÁ¿Êý¾Ý£¬ÊÇʵÏÖµÄÔöÁ¿Êý¾ÝÌá½»£¬¶øºǫ́¶ÔÓ¦Õâ¸öDataSetÐèÒªÓÐÏàÓ¦µÄ·þÎñ¶Ë³ÌÐò£¬ÎÒÓõÄÊÇ3.0°æ£¬¿ÉÒÔÖ§³ÖC#,VB,Java,¾ÝËûÃÇ˵ºÜ¿ìÒª³öÖ§³ÖPHPµÄ°æ±¾ÁË£¬²»¹ýÎÒÃÇÊÇÓÃC#£¬¿´ÁËËûÃÇC#µÄÀý×Ó£¬ºÃÏñÊǺǫ́ҪʵÏÖÁ½¸öÀ࣬һ¸ö´¦ÀíÈ¡Êý¾Ý°üÀ¨²éѯÊý¾Ý£¬ÁíÍâÒ»¸ö´¦ÀíÊý¾ÝµÄÌá½»£¬µ«ÎÒÃǾõµÃ·â×°Ò»ÏÂËÆºõ¸üºÃ£¬ÍêÈ«¿ÉÒÔÓÃÒ»¸öÀàµÄÁ½¸ö·½·¨À´Ð´ÂȻºó×öÒ»¸ö¿ØÖƲãÀ´×ª·¢¡£Í¨¹ýËûÃǵÄÀý×ӺʹúÂëÏòµ¼£¬ÎÒÃÇÖªµÀÈ¡Êý¾Ý°üÀ¨·ÖÒ³µÄ´úÂ루demo/Simple_Query.aspx£©ÊÇÕâÑùµÄ£º
using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using joyistar.eip.util;
using joyistar.eip.vo;


public partial class Simple_Query : System.Web.UI.Page {
    private String connString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source="+System.Web.HttpContext.Current.Server.MapPath(".")+"\\demo.mdb";
    private String sql = "select * from product";
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.ContentType = "text/xml";
        String xml = HttpParser.getXML(Request.InputStream);
        XmlRequest xmlRequest = new XmlRequest();

        try
        {
            xmlRequest.Open(xml);

            OleDbConnection conn = new OleDbConnection(connString);
            conn.Open();
            OleDbCommand cmd = new OleDbCommand(sql, conn);
            OleDbDataReader reader = cmd.ExecuteReader();
            DataTable metadata = reader.GetSchemaTable();
      
            int rowCount;//the row number of the table
            int maxRow;  //the row number displayed per page,which is one of the DataSet Propery
            int recNo;   
            maxRow = xmlRequest.MaxRows;
            recNo = xmlRequest.RecNo;
            //get rowCount
            string sqlCount = "select   count(*)   from   product";
            OleDbConnection MyConn = new OleDbConnection(connString);
            MyConn.Open();
            OleDbCommand MyComm = new OleDbCommand(sqlCount, MyConn);
            rowCount = (int)(MyComm.ExecuteScalar());
                        if(maxRow==-1) maxRow = rowCount;
            xmlRequest.SetRecordCount(rowCount);
           //fill fields
            foreach (DataRow row in metadata.Rows)
            {
                if (row["DataType"].Equals("STRING"))
                {
                    xmlRequest.AddField(System.Convert.ToString(row["ColumnName"]), System.Convert.ToString(row["DataType"]), System.Convert.ToInt32(row["ColumnSize"]));
                }
                else
                    xmlRequest.AddField(System.Convert.ToString(row["ColumnName"]), System.Convert.ToString(row["DataType"]));
            }
            //fill data        of the page       
            int count = -1;
            while (reader.Read())
            {
                count++;
                if (count >= recNo)
                {
                    if (count < (recNo + maxRow))
                    {
                        xmlRequest.Append();

                        foreach (DataRow row in metadata.Rows)
                        {
                            String fieldname = System.Convert.ToString(row["ColumnName"]);
                            String fieldvalue = reader[fieldname].ToString();
                            xmlRequest.SetValue(fieldname, fieldvalue);

                        }
                    }
                    else break;
                }

                else
                { continue; }


            }


            Response.Write(xmlRequest.GetXml());
            Response.Flush();

        }
        catch (Exception ex)
        {
            xmlRequest.SetError(ex.Message);
            Response.Write(xmlRequest.GetXml());
            Response.Flush();
        }
        finally {

        }
    }
}
È»ºóÕâ¸öÎļþÔÚ½çÃæÉÏÊÇÕâÑùʹÓõģ¬Ñ¡ÔñºÃDataSetºó£¬ÊäÈëOpenURLÊôÐÔΪdemo/Simple_Query.aspx£¬ÉèÖúÃÕâ¸ö¾Í¿ÉÒÔµãFieldsÈ»ºóË¢³ö±í½á¹¹À²£¬µ±È»Äã±ØÐëÆô¶¯webserver£¬ÔÚÄǸöRunÀïÃæÓÐstart webserver¡£¶ÔÁË£¬ÒªÄÜÕý³£Æô¶¯Ëü£¬ÄãÐèÒª°²×°ÓÐ.NET Framework 2.0²¢ÔÚ¹¤³ÌÊôÐÔÖÐÅäÖúÃ.NET·¾¶Å¶£º

ÔÙ¿´DataSetµÄÆäËûÊôÐÔ£¬AsyncÊÇÉèÖÃÒì²½»¹ÊÇͬ²½Ä£Ê½È¡Êý¾Ý£¬ActiveÊÇ´ò¿ªÊý¾Ý£¬ÕâÑùÒ³ÃæÒ»ÔØÈë¾Í»áÈ¡Êý¾Ý¹ýÀ´£¬Ò²¿ÉÒÔÔÚ³ÌÐòÖе÷ÓÃDataSet1.Open();À´´ò¿ªÊý¾Ý£¬Èç¹ûÒª×öÒ»¸ö²éѯ£¬»¹ÒªÏȹرÕÊý¾Ý£¬´«Èë²ÎÊý£¬ÔÙ´ò¿ªÊý¾ÝÖ´Ðвéѯ£¬´úÂëÀàËÆ£º
function Button1onclick() {
    DataSet1.Close();
    DataSet1.Params.Clear();
    if(Edit1.value) {
        DataSet1.Params.Add(new Param('NAME',Edit1.value,'string'));
    }
    DataSet1.Open();
}

µ±È»£¬×ö²éѯºǫ́ҲÓдúÂ룬ÊÇÕâÑùдµÄ£º
            // the data search code here
            Param param1 = xmlRequest.GetParam("NAME");//get the search information
            String sql_params = "";
            if (param1 != null)

            {
                sql_params = " where NAME='" + param1.Value+"' ";
                sql += sql_params;
            }
ÔÚʹÓÃAsync=trueµÄÒ첽ģʽʱ£¬ÎÒÃÇÓÐʱÓöµ½ºÜÆæ¹ÖµÄÎÊÌ⣬±ÈÈ缸¸ö±íͬʱ´ò¿ª×ÜÊdzö´í£¬ºóÀ´×ÐϸһÏë²ÅÃ÷°×£¬Ô­À´ÊÇÂë±íºÍÖ÷±íͬʱ´ò¿ª£¬Ö÷±í´ò¿ªÊ±Âë±íÊý¾Ý»¹Ã»ÓÐÈ¡µ½£¬ËùÒԾͳö´íÁË£¬ÓÚÊÇÉèÖÃÖ÷±íÔÚÂë±íµÄafteropenºó´ò¿ª¾Í¸ã¶¨ÁË¡£
Çл»µ½DataSetµÄʼþÒ³£¬¿ÉÒÔ¿´µ½ËüµÄʼþÁÐ±í£¬Ë«»÷½øÈ¥¼ÓÉÏÕâ¸ö¿ØÖÆ´úÂ룺


function DataSet3OnAfterOpen(dataset) {
        DataSet1.Open();
}

ÁíÍ⣬DataSetÓÐÒ»¸öMaxRowsÊôÐÔ£¬ÊÇÖ¸¶¨Ã¿Ò³È¡¶àÉÙÊý¾ÝµÄ£¬Ä¬ÈÏÊÇ5£¬Èç¹ûÉèÖóÉ-1£¬¾Í»áÈ¡ËùÓеÄÊý¾ÝŶ¡£
DataSetҪʵÏÖ·ÖÒ³£¬¾ÍÊÇʹÓÃÁËMaxRows£¬»¹ÓÐÔÚºǫ́µÄ±à³ÌʵÏÖ£¬¸ù¾ÝMaxRowsºÍRecNoÀ´È¡Êý¾Ý£¬RecNo¾ÍÊÇÆðʼ¼Ç¼ºÅ£¬»¹ÒªÉèÖÃ×ܼǼÊýÒÔ±ãÖªµÀÓжàÉÙÒ³£¬ÓõÄxmlRequest.SetRecordCount(xxx);
ÕâÀïµÄXmlRequestÊÇËûÃÇ·â×°µÄÇëÇó¶ÔÏ󣬺ǫ́µÄ²ÎÊýÓ³ÉäºÍÊý¾Ý·µ»Ø¶¼ÊÇÓõÄËü£¬±ÈÈçXmlRequest.MaxRows, XmlRequest.RecNo, XmlRequest.AddField, XmlRequest.Append, XmlRequest.SetValue£¬»ù±¾Éϳ£ÓõľÍÕâЩÁË¡£
DataSet»¹ÓÐÒ»¸öDataSourceÊôÐÔËÆºõÊÇÖ»ÓÐJava²Å»áÓõõ½£¬»¹ÓÐÈç¹ûÎÒÃÇ×Ô¼º·â×°ºǫ́Àà¿ØÖÆ²ã£¬Ò²¿ÉÒÔÆôÓÃÕâ¸öÊôÐÔ¡£
DataSetÓмÇÂ¼ÒÆ¶¯µÄ·½·¨£¬°üÀ¨First, Prev ,Next,Last,SetPosÕâЩ£¬È»ºóͨ¹ýDataSet.Fields.Field[¡°×Ö¶ÎÃû¡±].Value, DataSet.Fields.Fieldx[¡°×Ö¶ÎÐòºÅ¡±].Value¿ÉÒÔÈ¡»òдµ±Ç°¼Ç¼×ֶεÄÖµ£¬Ôö¼Ó¼Ç¼ÓÃAppend,ÐÞ¸ÄÓÃEdit,È·¶¨ÓÃPost,Ìá½»±£´æÓÃApply,È¡ÏûÐÞ¸ÄÓÃCancel,ɾ³ýÓÃDelete,¹þ¹þ£¬ºÍresultsetµÄ²Ù×÷ÊÇÍêÈ«ÀàËÆµÄ¡£
ÎÒÓÐЩģ¿é¾ÍÊÇÓÃÆÕͨInput Text£¬È»ºóͨ¹ýDataSetÓëºǫ́½»»¥£¬ÕæÊÇÏ൱µÄ·½±ãÁ¨£¬ÓÐЩ¾ÍÖ±½ÓÓÃÊý¾Ý¸ÐÓ¦µÄInput TextºÍDBGridʲôµÄ£¬ÍÏÀ­Æð£¬ÉèÖúÃÊôÐԾ͸㶨À²¡£
×îºó£¬DataSetµÄPostURL¾ÍÊÇÓÃÀ´ÉèÖÃÊý¾ÝÌá½»±£´æµÄ·þÎñ·¾¶£¬Êý¾ÝµÄÌá½»±ÈÈ¡Êý¾ÝÒªÂ鷳һЩ£¬Éæ¼°µ½Ôöɾ¸Ä¼¸ÖÖÇé¿öµÄ´¦Àí£¬¶ÔÁË£¬Õâ¸öDataSetÀ´Ö§³ÖÖ÷´Ó±íµÄÈ¡Êý¾ÝºÍÊý¾ÝÌá½»£¬ÕâÔÚÎÒÃǵĿª·¢ÖÐÊÇÌ«ÓÐÓÃÁË£¬²»¹ý±à³Ì´¦ÀíÒ²Ïà¶Ô¸´ÔÓһЩ£¬ÎÒÒª°ÑÕâ¶Îʱ¼äµÄ´úÂëÕûÀíÏÂÁË£¬ºÃ¸øÏîÄ¿×éµÄÆäËûÈËÒ»Æð½²Ï£¬¸ÄÌìÓпÕÔÙдһЩÌá½»Êý¾ÝºÍÖ÷´Ó±í²Ù×÷µÄ¾­Ñé¡£



²é¿´ÍêÕû°æ±¾: [ת]AJAX DataSetµÄʹÓÃÐĵÃ