asp.net ajax 中的webserivce 返回的datatable 在javascript 中如何处理
网上找的下面两种方法都有错
var Text= result.dataArray.substring(0,result.dataArray.length -1);
var Table = eval( Text);
var Table = Sys.Preview.Data.DataTable.parseFromJson(result);
我装的是正式版的ajax1.0
[解决办法]
帮顶
[解决办法]
<TABLE 设置好属性>
for(var i =0; i < rowcount(有几条信息);i++)
{
<tr>
for(var j = 0;j < colcount(每条有几列信息)j++)
{
<td > 内容 <td>
}
</tr>
}
</TABLE>
这个内容伏给一个东西的innerhtml
[解决办法]
var DS=response.value;
var obj=new Object(DS.Tables[0].Rows[0].ZZH_ID);
if(obj!=null && obj!=undefined)
{
if(DS.Tables[0].Rows[0].ZZH_ID!=null)
document.all( "txtZZHH ").value=DS.Tables[0].Rows[0].ZZH_ID;
else
document.all( "txtZZHH ").value= " ";
if(DS.Tables[0].Rows[0].SFZ_ID!=null)
document.all( "txtSFZH ").value=DS.Tables[0].Rows[0].SFZ_ID;
else
document.all( "txtSFZH ").value= " ";
if(DS.Tables[0].Rows[0].NAME!=null)
document.all( "txtName ").value=DS.Tables[0].Rows[0].NAME;
else
document.all( "txtName ").value= " ";
if(DS.Tables[0].Rows[0].AGNAME!=null)
document.all( "txtAGName ").value=DS.Tables[0].Rows[0].AGNAME;
else
document.all( "txtAGName ").value= " ";
............
document.all( "drpJG ").value=DS.Tables[0].Rows[0].JG;
document.all( "drpMZ ").value=DS.Tables[0].Rows[0].MZ;
document.all( "drpWHCD ").value=DS.Tables[0].Rows[0].WHCHD;
document.all( "drpHYZK ").value=DS.Tables[0].Rows[0].HYZK;
.................
来不及细说..行就给个分啊
[解决办法]
WebService是基于XML的
[解决办法]
下面是一个测试页面,对于utitlies的调用你可以删掉。看看对你有没有帮助。
//webform1.aspx文件:
<%@ Page language= "c# " Codebehind= "WebForm1.aspx.cs " AutoEventWireup= "false " Inherits= "AjaxTest.WebForm1 " %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN " >
<HTML>
<HEAD>
<title> WebForm1 </title>
<meta name= "GENERATOR " Content= "Microsoft Visual Studio .NET 7.1 ">
<meta name= "CODE_LANGUAGE " Content= "C# ">
<meta name= "vs_defaultClientScript " content= "JavaScript ">
<meta name= "vs_targetSchema " content= "http://schemas.microsoft.com/intellisense/ie5 ">
<script language= "javascript ">
function Other()
{
var cc=Utilities.test().value;
alert(cc);
}
function AddAjax(name)
{
WebForm1.AddAjaxTable(name);
LoadGrid();
}
function LoadGrid()
{
var cc=document.getElementById( "UCtd ");
cc.innerHTML=WebForm1.GetAjaxTable().value;
}
function testAjax(owner, item, evt)
{
var first=document.getElementById( "txtfirst ");
WebForm1.GetNIVNumber(first.value,callback_GetNIVNumber);
}
function callback_GetNIVNumber(res)
{
var obj=document.getElementById( "txtsecond ");
obj.value=res.value;
}
</script>
</HEAD>
<body MS_POSITIONING= "GridLayout ">
<form id= "Form1 " method= "post " runat= "server ">
<INPUT style= "Z-INDEX: 101; LEFT: 176px; POSITION: absolute; TOP: 8px " type= "button " value= "> > "
onclick= "testAjax(); ">
<asp:TextBox id= "txtfirst " style= "Z-INDEX: 102; LEFT: 8px; POSITION: absolute; TOP: 8px " runat= "server "> </asp:TextBox>
<asp:TextBox id= "txtsecond " style= "Z-INDEX: 103; LEFT: 248px; POSITION: absolute; TOP: 8px " runat= "server "> </asp:TextBox>
<INPUT type= "text " id= "AddTextBox " maxlength= "10 " style= "Z-INDEX: 104; LEFT: 8px; POSITION: absolute; TOP: 40px ">
<INPUT type= "button " value= "添加 " onclick= "javascript:AddAjax(Form1.AddTextBox.value); " style= "Z-INDEX: 105; LEFT: 176px; POSITION: absolute; TOP: 40px ">
<table style= "Z-INDEX: 106; LEFT: 8px; POSITION: absolute; TOP: 72px ">
<TR>
<TD id= "UCtd "> <FONT face= "宋体 "> </FONT> </TD>
</TR>
</table>
<INPUT type= "button " value= "测试 " onclick= "javascript:Other(); " style= "Z-INDEX: 105; LEFT: 248px; POSITION: absolute; TOP: 40px ">
</form>
</body>
</HTML>
//webform1.aspx.cs文件:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.Odbc;
using System.Data.SqlClient;
using System.Data.OleDb;
namespace AjaxTest
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox txtfirst;
protected System.Web.UI.WebControls.TextBox txtsecond;
private void Page_Load(object sender, System.EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(AjaxTest.WebForm1));
Ajax.Utility.RegisterTypeForAjax(typeof(AjaxTest.Utilities));
}
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.Read)]
public static string GetNIVNumber(string str)
{
return str;
}
[Ajax.AjaxMethod()]
public int AddAjaxTable(string name)
{
//输入一个字符串,然后更新
OleDbConnection cn = new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings[ "connectionString "]);
cn.Open();
OleDbCommand cmd = new OleDbCommand( "insert into ajaxTable(name) values( ' "+name+ " ') ", cn);
int result = cmd.ExecuteNonQuery();
cn.Dispose();
cmd.Dispose();
return result;
}
[Ajax.AjaxMethod]
public string GetAjaxTable()
{
//这个方法就是拿到datagrid生成出来的html
OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings[ "connectionString "]);
OleDbCommand cmd = new OleDbCommand( "select * from ajaxTable order by id ", conn);
OleDbDataAdapter ap = new OleDbDataAdapter( cmd );
DataSet ds = new DataSet();
ap.SelectCommand.Connection.Open();
ap.Fill( ds, "db " );
conn.Dispose();
cmd.Dispose();
//实例化一个datagird类并设置好数据源
DataGrid dg = new DataGrid();
dg.DataSource = ds.Tables[ "db "];
dg.DataBind();
//实例化一个HtmlTextWriter的类
System.Text.StringBuilder strb = new System.Text.StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter( strb );
System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter( sw );
//执行控件的render并输出到HtmlTextWriter里
dg.RenderControl( htw );
string s = strb.ToString();
return s;//最后就是返回这个html啦
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}