如题?

解决方案 »

  1.   

    將Datatable轉換成XML格式,這樣前臺可以通過XML獲取Datatable的內容。
      

  2.   

    如果不是用ajaxpro,可以把datatable转成xml串或是拼成json串.
    然后返回客户端在解析
      

  3.   

    参考
    http://www.cnblogs.com/GodSpeed/archive/2008/05/14/1197093.html
      

  4.   

    用的ajaxpro参考http://www.cnblogs.com/jinglecat/archive/2007/07/30/835850.html
      

  5.   

    我用js+webservice做的一個Ajax版gridview.
    貼一些關鍵代碼<div id="__AJAX_GridView1__div" ondblclick="return editCell()"></div><%--將datatable放如div中,讓其看上去像Gridview--%>/*--填充div--------------------------------------------------------------------------------------------------------*/ 
        function UpdateTable(xmlDoc)
        {
            var sb = new Sys.StringBuilder();        sb.append("<table cellspacing=\"0\" cellpadding=\"4\" rules=\"all\" border=\"1\" id=\"__AJAX_GridView__div\" style=\"background-color:White;border-width:1px;border-style:Solid;border-collapse:collapse;\">");
            sb.append("<tr style=\"font-weight:bold;\">");
            sb.append("<th scope=\"col\" style=\"width:1%;white-space:nowrap;\">No</th>");
            sb.append("<th scope=\"col\" style=\"width:1%;white-space:nowrap;\">Project1</th>");
            sb.append("<th scope=\"col\" style=\"width:1%;white-space:nowrap;\">Item</th>");
            sb.append("<th scope=\"col\" style=\"width:1%;white-space:nowrap;\">Code</th>");
            sb.append("<th scope=\"col\" style=\"width:1%;white-space:nowrap;\">Desciption</th>");
            sb.append("<th scope=\"col\" style=\"width:1%;white-space:nowrap;\">Status</th>");
            sb.append("<th scope=\"col\" style=\"width:1%;white-space:nowrap;\">Percent</th>");
            sb.append("<th scope=\"col\" style=\"width:1%;white-space:nowrap;\">StartDate Date</th>");
            sb.append("<th scope=\"col\" style=\"width:1%;white-space:nowrap;\">DueDate</th>");
            sb.append("<th scope=\"col\" style=\"width:1%;white-space:nowrap;\">Owner</th>");
            sb.append("<th scope=\"col\" style=\"width:1%;white-space:nowrap;\">NeedTime</th>");
            sb.append("</tr>");        var x = xmlDoc.getElementsByTagName('AJAXData');
            for (i=0;i<x.length;i++)
            {
                var PostItem=x[i];
                var No=PostItem.childNodes[0].text;
                var Project1=PostItem.childNodes[1].text;
                var Item=PostItem.childNodes[2].text;
                var Code=PostItem.childNodes[3].text;
                var Desciption=PostItem.childNodes[4].text;
                var Status=PostItem.childNodes[5].text;
                var Percent=PostItem.childNodes[6].text;
                var StartDate=PostItem.childNodes[7].text;
                var DueDate=PostItem.childNodes[8].text;
                var Owner=PostItem.childNodes[9].text;
                var NeedTime=PostItem.childNodes[10].text;
                
                sb.append("<tr style=\"color:#003399;background-color:White;\">");
                sb.append("<td class=\"frozenHorizontal\" style=\"width:50px;\">");
                sb.append(No);
                sb.append("</td>");
                sb.append("<td class=\"frozenHorizontal\" style=\"width:50px;\">");
                sb.append(Project1);
                sb.append("</td>");
                sb.append("<td class=\"frozenHorizontal\" style=\"width:50px;\">");
                sb.append(Item);
                sb.append("</td>");            sb.append("<td class=\"frozenVerticalOther\" style=\"width:50px;\">");
                sb.append(Code);
                sb.append("</td>");
                sb.append("<td class=\"frozenVerticalOther\" style=\"width:50px;\">");
                sb.append(Desciption);
                sb.append("</td>");
                sb.append("<td class=\"frozenVerticalOther\" align=\"right\" style=\"width:80px;\">");
                sb.append(Status);
                sb.append("</td>");
                
                sb.append("<td class=\"frozenVerticalOther\" align=\"right\" style=\"width:80px;\">");
                sb.append(Percent);
                sb.append("</td>");
                sb.append("<td class=\"frozenVerticalOther\" style=\"width:100px;\">");
                sb.append(StartDate);
                sb.append("</td>");
                sb.append("<td class=\"frozenVerticalOther\" style=\"width:50px;\">");
                sb.append(DueDate);
                sb.append("</td>");
                
                sb.append("<td class=\"frozenVerticalOther\" style=\"width:50px;\">");
                sb.append(Owner);
                sb.append("</td>");
                sb.append("<td class=\"frozenVerticalOther\" style=\"width:50px;\">");
                sb.append(NeedTime);
                sb.append("</td>");
                sb.append("</tr>");
            }
            sb.append("</table>");
            $get("__AJAX_GridView1__div").innerHTML=sb.toString();
        }/*--填充div--------------------------------------------------------------------------------------------------------*/ //Create By Takako_Yang,at 2008/12/04
        [WebMethod(Description = "My AJAX Gridview Data Select", EnableSession = true)]
        [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
        public XmlDocument GetData(int pagesize,int pageCurrentCount,string userName, string project)
        {
            DailyWorkFactory myDailyWorkFactory = new DailyWorkFactory();
            DataTable dt = myDailyWorkFactory.GetDailyWork(0, 1,pagesize,pageCurrentCount, userName, project, "");//flag1用來判斷Select來源自現有的,還是編輯時Create的新的
            StringBuilder sb = new StringBuilder();
            sb.Append("<AJAXSet>");
            //select [No],Project,Item,Code,[Description (purpose/value)],
            //Status,[%],[Start Date],[Due Date],Owner,[Day/Hour] from daily_work
            foreach (DataRow myDataRow in dt.Rows)
            {
                string No = myDataRow[0].ToString();
                string Project1 = myDataRow[1].ToString();
                string Item = myDataRow[2].ToString();
                string Code = myDataRow[3].ToString();
                string Desciption = myDataRow[4].ToString();
                string Status = myDataRow[5].ToString();
                string Percent = myDataRow[6].ToString();
                string StartDate = (Convert.ToDateTime(myDataRow[7])).ToString("yyyy/MM/dd");
                string DueDate = (Convert.ToDateTime(myDataRow[8])).ToString("yyyy/MM/dd");
                string Owner = myDataRow[9].ToString();
                string NeedTime = myDataRow[10].ToString();
                sb.Append("<AJAXData>");
                sb.Append("<P1>").Append(No).Append("</P1>");
                sb.Append("<P2>").Append(Project1).Append("</P2>");
                sb.Append("<P3>").Append(Item).Append("</P3>");
                sb.Append("<P4>").Append(Code).Append("</P4>");
                sb.Append("<P5>").Append(Desciption).Append("</P5>");
                sb.Append("<P6>").Append(Status).Append("</P6>");
                sb.Append("<P7>").Append(Percent).Append("</P7>");
                sb.Append("<P8>").Append(StartDate).Append("</P8>");
                sb.Append("<P9>").Append(DueDate).Append("</P9>");
                sb.Append("<P10>").Append(Owner).Append("</P10>");
                sb.Append("<P11>").Append(NeedTime).Append("</P11>");
                sb.Append("</AJAXData>");
            }
            sb.Append("</AJAXSet>");
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(sb.ToString());
            return xmlDoc;
        }
      

  6.   

    楼上几位说的都是服务器端发送到客户端的,那样的话,AJAX的作用就没有了aspx.vb:
        <AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.Read)> Public Function GetJHZJ(ByVal tmpQID As Integer) As DataTable
            sql = "select * from JHZJ where QID=" & tmpQID & " order by Cate,id"
            Return myDB.GetTab(sql)
        End Functionaspx:(js)
    var tab=web.JHZJEdit.GetJHZJ(n).value;
    if(tab != null && typeof(tab) == "object"){
    for(i=0; i<tab.Rows.length; i++){
    var obj=document.getElementById("table0");
    var r=document.getElementById("rowi").value;
    r=r-0;
    obj.rows(r).cells(4).innerText=tab.Rows[i]["Nums"];
    obj.rows(r).cells(6).innerText=tab.Rows[i]["bbbb"];
    obj.rows(r).cells(8).innerText=tab.Rows[i]["Content"];
    }
    }
      

  7.   

    上面的代码是VS2003,以前写的,VS2005略有不同
      

  8.   

    protected DataTable dt = null;   
    protected void Page_Load(object sender, EventArgs e)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(Setting),this.Page);
        }
     [AjaxPro.AjaxMethod]
        public DataTable BindData()
        {
            dt = BDB.GetTab("select * from Setting");
            return dt;
        } <% for (i = 0; i < dt.Rows.Count; i++)
                   {%>
                    <tr>
                        <td align="center">
                            <%=dt.Rows[i]["ID"].ToString()%>
                        </td>
                        <td align="center">
                            <%=dt.Rows[i]["Setname"].ToString()%>
                        </td>
                        <td>
                            <%=dt.Rows[i]["Setvalue"].ToString()%>
                        </td>
                    </tr>
                    <%} %>
      

  9.   

    问题自己解决了,谢谢大家回复,用的方法和liujiayu10()的一样
      

  10.   

    result是你返回的function fn_DataTableResult(result)
    {
        //result 为 返回的结果
        if(result==null)
        {
          alert("空");
          return ;
        }    //行数
        var rowNum = result.rows.length;
        alert("行数 "+rowNum);    //列数
        var colNum = result.columns.length;
        alert("列数 "+colNum);    //列名
        for(var i=0;i<colNum;i++)
        {
           var colName = result.columns[i].name;
            alert(i+" 列名 "+colName);//从0开始
        }    //循环取值
        for(var i=0;i<rowNum;i++)
        {
            var currRow = result.rows[i];
            for(var j=0;j<colNum;j++)
            {               
                var currColName = result.columns[j].name;
                var currValue = currRow[currColName];                
                alert(i+"行"+j+"列 值" + currValue);//i j 从0开始
            }
        }
    }