应用:
      客户端提出查询SQLServer数据库请求,通过Ajax取回数据到客户端的RecordSet,然后绑定到ActiveX  Grid中去
思路:
      1.使用【AjaxPro2】在网页客户端向网页服务器端发出请求
      2.由网页服务器端向SQLServer提交数据请求并且返回数据
      3.由服务器端返回数据,填充客户端的【RecordSet】(注:CreateObject("ADODB.RecordSet"))
问题:
     以上的第一和第二已经解决,第三点现在返回的数据无法写入RecordSet,不管用vbscript还是javascript 都可以,劳驾写出代码,一定给分,这几天等。补充:
     服务器端返回DataSet或者XML或者其他的对象都可以,只要能通过ajax实现客户的RecordSet取得服务器的DataTable就可以,不知道我这样写您明白了没有?
     (或者由其他的思路也可贴出来看看)
部分代码: <script language="javascript" type="text/javascript" >
     function syncServer(strSearch)
      {
          var str=strSearch;
          if(confirm("确定要提交?"))
          {
              MyAjaxMethods.Test01(str,CallBack);
          }
      }
      function CallBack(res)
      {     
       alert(res.value)
      }    
    </script>
    
    <script language="vbscript" type="text/vbscript" >
       sub GETSearch()
          Call GETSearch("abc")       rs = CreateObject("ADODB.RecordSet")
       '代码怎么写       End Sub    
    </script>
    

解决方案 »

  1.   

    思路有点问题这跟一般的asp/asp.net程序没有任何区别,只是事件不是由点击发起,而是由ajax发起。另外RecordSet是asp程序里的对象,asp.net改用DataSet了。
      

  2.   

      RecordSet是服务器端的,Not客户端的,使用Ajax不会使页面回传,那么RecordSet将不会再次刷新从服务器端取数。
      所有如何你想要即时刷新页面的数据,又不想让页面刷新,请自己写个填充Table的script函数吧。  function FillTable(object data)
     {
       //画出Table来,或以自己的格式显示数据
    }
      

  3.   

    思路有问题。在服务器端直接填充最终显示格式(如填充GridView、DataList等),然后把最终的HTML代码返回给客户端,在客户端直接将这些返回的HTML代码显示到具体的DIV中就行了。
      

  4.   

    test.xml:
    <?xml version="1.0" encoding="utf-8" ?>
    <NewDataSet>
      <Table>
        <uid>1</uid>
        <name>sysobjects</name>
        <type>S </type>
        <refdate>2002-12-17T14:36:10.0430000+01:00</refdate>
      </Table>
      <Table>
        <uid>1</uid>
        <name>sysindexes</name>
        <type>S </type>
        <refdate>2002-12-17T14:36:10.0430000+01:00</refdate>
      </Table>
      <Table>
        <uid>1</uid>
        <name>syscolumns</name>
        <type>S </type>
        <refdate>2002-12-17T14:36:10.0430000+01:00</refdate>
      </Table>
      <Table>
        <uid>1</uid>
        <name>systypes</name>
        <type>S </type>
        <refdate>2002-12-17T14:36:10.0430000+01:00</refdate>
      </Table>
      <Table>
        <uid>1</uid>
        <name>syscomments</name>
        <type>S </type>
        <refdate>2002-12-17T14:36:10.0430000+01:00</refdate>
      </Table>
    </NewDataSet>页面:
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestAjaxPro.aspx.cs" Inherits="TestImage.TestAjaxPro" %><!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>无标题页</title>
        <script language="javascript" type="text/javascript">
        <!--
        function doTest1() 
        {
            TestImage.TestAjaxPro.GetDataSet(_callback1);
        }    function _callback1(res) 
        {
            var cols = res.value.Tables[0].Columns.length;
            var rows = res.value.Tables[0].Rows.length;
            //alert(cols + " cols and " + rows + " rows");
            //loop
            
            var TableInnerHtml = "<table border='0'><tr><td>uid</td><td>name</td><td>type</td><td>refdate</td></tr>";
            
            for(var i=0;i< rows;i++)
            {
                TableInnerHtml += "<tr><td>" + res.value.Tables[0].Rows[i].uid +"</td>"; 
                TableInnerHtml += "<td>" + res.value.Tables[0].Rows[i].name +"</td>";
                TableInnerHtml += "<td>" + res.value.Tables[0].Rows[i].type +"</td>";
                TableInnerHtml += "<td>" + res.value.Tables[0].Rows[i].refdate +"</td></tr>";
            }
            TableInnerHtml += "</table>";
            //
            document.getElementById("Temptable").innerHTML = TableInnerHtml;
        }
        //-->
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="Temptable">
           
        </div>
        <input id="Button1" type="button" value="button" onclick="doTest1();" />
        </form>
    </body>
    </html>后台:
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    namespace TestImage
    {
        public partial class TestAjaxPro : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                AjaxPro.Utility.RegisterTypeForAjax(typeof(TestAjaxPro));//注册        }        [AjaxPro.AjaxMethod]
            public DataSet GetDataSet()
            {
                DataSet ds = new DataSet();            ds.ReadXml(System.Web.HttpContext.Current.Server.MapPath("~/test.xml"));
                return ds;
            }
        }
    }注意:请不要使用AjaxPro.2.DLL 7.7.31,这个版本对返回dataset有点问题。请使用他前面的版本比如:6.10.6.2
      

  5.   

    效果图:
    uid name type refdate 
    1 sysobjects S  2002-12-17T14:36:10.0430000+01:00 
    1 sysindexes S  2002-12-17T14:36:10.0430000+01:00 
    1 syscolumns S  2002-12-17T14:36:10.0430000+01:00 
    1 systypes S  2002-12-17T14:36:10.0430000+01:00 
    1 syscomments S  2002-12-17T14:36:10.0430000+01:00 
      

  6.   

    1楼你没有理解我的意思,RecordSet我把它用在客户端主要就是为了复杂的数据操作和绑定,就比如Axtivex控件,绑定上去。
    我看了大家的帖子,谢谢大家,有部分问题已经解决,9楼说的用xml那速度不知道怎么样,
    我在http://topic.csdn.net/u/20081110/02/cc1a10b9-43fa-4fb4-a526-82132bf76115.html还发了一贴,进来的兄弟可以看看。
    唉,客户端的RecordSet还是无法得到
      

  7.   

    不用XML你自己返回DATASET就行了
      

  8.   

    关键的问题还是你从服务器端取回的数据和页面展示之间的联系问题
    只有,自己写script了