NetWinForm程序园
您的位置: 首页 > 文章列表 > 客户端通过Ajax调用后台方法返回DataSet,Ilist,ilist,T,对象
客户端通过Ajax调用后台方法返回DataSet,Ilist,ilist,T,对象
分类: asp.net 开发 发布:2010-9-4 22:20:01 阅读:6158次 评论:0人评论
关键字: ajaxjscs后台前台

一、客户端通过Ajax调用后台方法返回DataSet,Ilist,ilist,T,对象

后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Xy.GamePt.VO;
using Xy.GamePt.BO;
using System.Collections;

public partial class Test : System.Web.UI.Page
{
//添加一个 AjaxPro.HttpSessionStateRequirement 枚举的值到你的 AjaxPro.AjaxMethodAttribute中.

//例如:
//[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.Read)]
//现在你就可以像下面这样存取Session的值了: this.Session["0"].ToString().


//另外一个问题:如何在AjaxMethod中使用Cookie?

//答案是不能使用"this"的引用存取cookie ,你必须使用HttpContext.Current

//例如:
//HttpContext.Current.Request.Cookies[Name].Value.

protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(
typeof(Test));

}

[AjaxPro.AjaxMethod()]
public string GetServerTime()
{
System.Threading.Thread.Sleep(
2000);
return DateTime.Now.ToString();
}

[AjaxPro.AjaxMethod()]
public DataSet GetDataSet()
{
DataSet ds
= new DataSet();
DataTable dt
= new DataTable();
dt.Columns.Add(
"id", typeof(int));
dt.Columns.Add(
"parentId", typeof(int));
dt.Columns.Add(
"name", typeof(string));

dt.Rows.Add(
1, 0, "A-DGamename1");
dt.Rows.Add(
2, 1, "A-DGamename2");
dt.Rows.Add(
3, 1, "A-DGamename3");
dt.Rows.Add(
4, 1, "A-DGamename4");
dt.Rows.Add(
5, 0, "A-DGamename5");
dt.Rows.Add(
6, 5, "A-DGamename6");

dt.Rows.Add(
1, 0, "E-HGamename1");
dt.Rows.Add(
2, 1, "E-HGamename2");
dt.Rows.Add(
3, 1, "E-HGamename3");
dt.Rows.Add(
4, 1, "E-HGamename4");
dt.Rows.Add(
5, 0, "E-HGamename5");
dt.Rows.Add(
6, 5, "E-HGamename6");

ds.Tables.Add(dt);
return ds;
}

[AjaxPro.AjaxMethod()]
public IList<Game> GetGameList()
{
return GameBO.GetGameList();
}

[AjaxPro.AjaxMethod()]
public Game GetGame()
{
return GameBO.GetGame();
}

/// <summary>
/// 返回Ilist
/// </summary>
/// <param name="parameter">脚本字符串参数</param>
/// <param name="arr">脚本数组参数</param>
/// <param name="xiaoxin">脚本对象参数</param>
/// <returns></returns>
[AjaxPro.AjaxMethod()]
public IList GetData(string parameter,string [] arr,object obj)
{
object xxxx = obj;
Hashtable ht
= xxxx as Hashtable;
string sss = parameter;
Array aaaa
= arr;
//Hashtable ht = arr as Hashtable;
return TestBO.GetIlist();
}
}


前台代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>

<!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>
</head>
<body>
<form id="form1" runat="server">
<select id="Select1">
<option></option>
</select>
<div id="loadinfo" style="visibility:hidden;position:absolute;left:0px;top:0px;background-color:Red;color:White;">Loading</div>

<input id="Button1" type="button" value="Get StrServerTime" onclick ="javascript:GetTime();void(0)" />
<input id="Button2" type="button" value="DataSet" onclick ="javascript:Change();void(0)" />
<input id="Button3" type="button" value="DataiList" onclick ="javascript:GetIListData();void(0)" />
<input id="Button3" type="button" value="GetGameList" onclick ="javascript:GetGameList();void(0)" />
<input id="Button3" type="button" value="GetGame" onclick ="javascript:GetGame();void(0)" />
<div id="newDG"></div>

<script type="text/javascript" language="javascript">
// loading效果
AjaxPro.onLoading = function(b) {
var a
= document.getElementById("loadinfo");
a.style.visibility
= b ? "visible" : "hidden";
}
/* 客户端调用返回的字符串--------------------*/
function GetTime() {
// 调用服务端方法
//调用方法:类名.方法名 (参数为指定一个回调函数)
Test.GetServerTime(callback);
}
function callback(res)
//回调函数,显示结果
{
alert(res.value);
}
/*-----------------------------------------*/
/* 客户端调用返回的DataSet--------------------*/

function Change() {
Test.GetDataSet(change_callback)
}
function change_callback(response) {
var ds
= response.value;
var content
= document.getElementById("newDG");
var table
= null;
for (var i = 0; i < ds.Tables[0].Rows.length; i++) {
if (i == 0) {
table
= ds.Tables[0].Rows[i].name + "<br>";
}
else {
table
+= ds.Tables[0].Rows[i].name + "<br>";
}
}
content.innerHTML
= table;
}
/*----------------------------------------------*/

/* 客户端调用返回的IList--------------------*/
function GetIListData() {
var arr
= Array("1", "2", "5", "64", "78");

function User(name, age) {
this.name = name;
this.age = age;
this.canFly = false;
}
var obj
= new User("234", "5345");

Test.GetData(
"sdfsd", arr, obj, GetIListData_callback);
}
function GetIListData_callback(response) {
var ilist
= response.value;
var content
= document.getElementById("newDG");
var table
= null;
for (var i = 0; i < ilist.length; i++) {
if (i == 0) {
table
= ilist[i][1] + "|" + ilist[i][2] + "<br>";
}
else {
table
+= ilist[i][1] + "|" + ilist[i][2] + "<br>";
}
}
content.innerHTML
= table;
}
/*----------------------------------------------*/

/* 客户端调用返回的范型GameList--------------------*/

function GetGameList() {
Test.GetGameList(GetGameList_callback)
}
function GetGameList_callback(response) {
var gameList
= response.value;
var content
= document.getElementById("newDG");
// var table = game.StrGameName;
var table = null;
for (var i = 0; i < gameList.length; i++) {
if (i == 0) {
table
= gameList[i].StrGameName + "<br>";
}
else {
table
+= gameList[i].StrGameName + "<br>";
}
}
content.innerHTML
= table;
}
/*----------------------------------------------*/


/* 客户端调用返回的实体Game--------------------*/
function GetGame() {
Test.GetGame(GetGame_callback)
}
function GetGame_callback(response) {
var game
= response.value;
var content
= document.getElementById("newDG");
var table
= game.StrGameName;

content.innerHTML
= table;
}
/*----------------------------------------------*/

</script>
</form>
</body>
</html>


二、前台通过按钮事件调用后台方法

前台隐藏一按钮
<asp:Button ID="reuser_btn" runat="server" onclick="reuser_btn_Click" style="display:none;" />

<script>document.getElementById('<%=reuser_btn.ClientID%>').click();</script>

后台写按钮提交事件
 protected void reuser_btn_Click(object sender, EventArgs e)
 {

 }

三、后台调用前台js方法

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "page_alert", "alert('ok')", true);

Response.Write("<script>alert('ok');</script>")
   

    评论交流
我来说两句
用户名: 您目前是匿名发表 登录 | 注册



相关文章
文章分类
推荐阅读