[ת]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À´Ö§³ÖÖ÷´Ó±íµÄÈ¡Êý¾ÝºÍÊý¾ÝÌá½»£¬ÕâÔÚÎÒÃǵĿª·¢ÖÐÊÇÌ«ÓÐÓÃÁË£¬²»¹ý±à³Ì´¦ÀíÒ²Ïà¶Ô¸´ÔÓһЩ£¬ÎÒÒª°ÑÕâ¶Îʱ¼äµÄ´úÂëÕûÀíÏÂÁË£¬ºÃ¸øÏîÄ¿×éµÄÆäËûÈËÒ»Æð½²Ï£¬¸ÄÌìÓпÕÔÙдһЩÌá½»Êý¾ÝºÍÖ÷´Ó±í²Ù×÷µÄ¾Ñé¡£ |