客户端通过Ajax调用后台方法返回DataSet,Ilist,ilist,T,对象
来源:互联网 发布:跟兄弟连学php 购买 编辑:程序博客网 时间:2024/06/05 05:26
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().
//答案是不能使用"this"的引用存取cookie ,你必须使用HttpContext.Current //例如: protected void Page_Load(object sender, EventArgs e) [AjaxPro.AjaxMethod()] [AjaxPro.AjaxMethod()] dt.Rows.Add(1, 0, "E-HGamename1"); [AjaxPro.AjaxMethod()] [AjaxPro.AjaxMethod()] /// <summary> 前台 <%@ 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"> <script type="text/javascript" language="javascript"> function Change() { /* 客户端调用返回的IList--------------------*/ Test.GetData("sdfsd", arr, obj, GetIListData_callback); /* 客户端调用返回的范型GameList--------------------*/ function GetGameList() { content.innerHTML = table; </script>
//另外一个问题:如何在AjaxMethod中使用Cookie?
//HttpContext.Current.Request.Cookies[Name].Value.
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(Test));
}
public string GetServerTime()
{
System.Threading.Thread.Sleep(2000);
return DateTime.Now.ToString();
}
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(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;
}
public IList<Game> GetGameList()
{
return GameBO.GetGameList();
}
public Game GetGame()
{
return GameBO.GetGame();
}
/// 返回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();
}
}
<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>
// 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--------------------*/
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;
}
/*----------------------------------------------*/
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");
}
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;
}
/*----------------------------------------------*/
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;
}
/*----------------------------------------------*/
</form>
</body>
</html>
Js调用Ajax方法,看似简单,自己用了用,没想到还是出现很多问题...记下几点:(注:工具是VS2005)
1、建站就不用说了,引用AjaxPro.dll
2、建一个cs类,用来封装ajax方法,代码如下:
public partial class AjaxMethod
{
private SqlConnection con = null;
private SqlCommand com = null;
private static string conString =
System.Web.Configuration.WebConfigurationManager.ConnectionStrings["conString"].ConnectionString;
[AjaxPro.AjaxMethod] ///这个莫忘记
public DataTable GetList()
{
DataSet ds = new DataSet();
string sql = "select top 10 * from news";
con = new SqlConnection(conString);
SqlDataAdapter da = new SqlDataAdapter(sql,con);
da.Fill(ds, "News");
return ds.Tables[0];
}
}
3、接下来应该是可以调用了吧。然后在AjaxTest.aspx.cs页注册ajax才行。代码如下
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(JqueryDome.AjaxMethod)); ///这一步太重要了,可不忘记[注:此处类型是 命名空间.类名]
}
4、一步一步挺顺利的。嘿嘿。接下来只管调用了吧:js代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxTest.aspx.cs" Inherits="JqueryDome.AjaxTest" %>
<!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" src="JS/jquery.js"></script>
<script language="javascript" type="text/javascript">
function Load()
{
var dt = JqueryDome.AjaxMethod.GetList().value; ////这就是简单的JS调用AJAX方法。。。[命名空间.类名.方法名]
if(dt != undefined)
{
var divNews = $("#divNews");
var text = "<table border='1' cellpadding='0' cellspacing='0'>";
for(var i=0;i<dt.Rows.length;i++)
{
text += "<tr><td>"+dt.Rows[i].Id+"</td><td>"+dt.Rows[i].LeadTitle+"</td></tr>";
}
text +="</table>";
$(divNews).html(text);
$("tr").each(
function(i){
if(i%2==0)
{
$(this).addClass("color");
}
}
);
}
}
function Display()
{
var divNews = $("#divNews");
divNews.toggle();
}
</script>
<style>
.color{
background-color:Red;
}
</style>
</head>
<body>
<form id="form1" runat="server"> ////这里也要注意的是.form必加runat="server"
<div id="divNews">
</div>
<input id="btnSubmit" type="button" value="读取数据" onclick="Load()" />
<input id="btnShow" type="button" value="显示/隐藏" onclick="Display()"/>
</form>
</body>
</html>
5、简单的搭建好了,运行一下,结果是。。。结果是。。。未定义JqueryDome,。马上查原因...
打开html源代码看了,有
<script type="text/javascript" src="/ajaxpro/core.ashx"></script>
<script type="text/javascript" src="/ajaxpro/JqueryDome.AjaxMethod,JqueryDome.ashx"></script>
说明AjaxPro.dll引用正确.再找其它原因,才发现
居然我落了很重要的一步:
Web.config文件的配置...
<system.web>
<httpHandlers>
<add verb= "POST,GET" path= "ajaxpro/*.ashx" type= "AjaxPro.AjaxHandlerFactory,AjaxPro"/> ////这也很重要的,可以做为第二步
</httpHandlers>
</system.web>
再运行,OK,一切正常,看来真的是很简单的.我在这里只是提几个注意点.供初次用的朋友们参考.让高手们见笑了....
- 客户端通过Ajax调用后台方法返回DataSet,Ilist,ilist,T,对象
- IList,IList<T>转成dataSet
- IList(T)转换DataSet
- IList(T) 方法
- IList(T) 方法
- ilist dataset
- Ilist<T> 转换成 DataSet
- IList
- IList
- IList 转换成 DataSet
- IList转换成DataSet
- Ilist转换成dataset
- IList 转换成 DataSet
- Ilist 转换成 DataSet
- IList转换成DataSet
- SqlDataReader to IList<T>
- IList<T>排序
- IList转DataSet(支持Nullable)
- CreateDialogParam函数的应用
- 新创
- 信号
- linux软连接和硬链接
- 线性结构-链表
- 客户端通过Ajax调用后台方法返回DataSet,Ilist,ilist,T,对象
- 讓 Cygwin 也有 cron
- 使用 IE8 上传附件时提示“无效的图片文件”
- jsp ftp上传下载实例
- 如何切入分析一个网站?
- IP地址控件(CIPAddressCtrl)的使用
- usb debugging的实现机制
- vb2008 webbrowser 如何禁止 脚本错误提示 及弹出对话框
- 程序员不成熟的若干个特征