ajaxPro以及flot的一些小应用
来源:互联网 发布:js div上下滑动效果 编辑:程序博客网 时间:2024/06/07 22:26
ajaxPro的机制导致每次调用后台代码都会重新生成后台方法类的对象。所以不能使用单例模式来存储传输数据,存储和传输数据要使用session等方法。
具体例子如下:
1 使用asp自带服务器端控件
文件结构如图:
defau.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!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"><script type="text/javascript" src="js/jquery-1.6.js"></script> <script language="javascript" type="text/javascript" src="flot/jquery.flot.js"></script> <title>show flot</title></head><body> <form id="form1" runat="server"> <div id="placeholder" style="width:600px;height:300px;"> </div> <div> <asp:RequiredFieldValidator ID="RequiredDataOne" runat="server" ControlToValidate="text_dataOne" ErrorMessage="Require a number"></asp:RequiredFieldValidator> <asp:RangeValidator ID="RangeValidator_DataOne" runat="server" ControlToValidate="text_dataOne" ErrorMessage="you must input a mnumber" Type="Double"></asp:RangeValidator> <asp:TextBox ID="text_dataOne" runat="server" ></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredDataTwo" runat="server" ControlToValidate="text_dataTwo" ErrorMessage="Required a number"></asp:RequiredFieldValidator> <asp:RangeValidator ID="RangeValidator_DataTwo" runat="server" ControlToValidate="text_dataTwo" Type="Double" Visible="True">you must input a mnumber</asp:RangeValidator> <asp:TextBox ID="text_dataTwo" runat="server"></asp:TextBox> <asp:Button ID="button_submitData" runat="server" onclick="Button_submitData_Click" Text="OK" /> </div> <script type="text/javascript"> $(function() { var dList = ShowFlot.AjaxForData.GetDataList().value; var newData = []; for (var i = 0; i < dList.length; i++) { newData.push([i, dList[i]]); } $.plot($("#placeholder"), [ { label: "Data", data: newData } ], { series: { lines: { show: true }, points: { show: true } } }); }); </script> </form></body></html>
default.aspx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using ShowFlot;public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxForData)); if (!IsPostBack) { DataForChart getData = DataForChart.GetSingleton(); getData.DataOne = 1; getData.DataTwo = 2; Session["dataForChart"] = getData; } } protected void Button_submitData_Click(object sender, EventArgs e) { DataForChart getData = DataForChart.GetSingleton(); try { getData.DataOne = Convert.ToInt32(text_dataOne.Text); getData.DataTwo = Convert.ToInt32(text_dataTwo.Text); } catch (Exception de) { getData.DataOne = 1; getData.DataTwo = 2; Session["dataForChart"] = getData; } Session["dataForChart"] = getData; }}
AjaxForData.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web; namespace ShowFlot { /// <summary> /// the business logic for the data whhic are used by the flot /// </summary> public class AjaxForData { /// <summary> /// the constrctor for the class AjaxForData /// </summary> public AjaxForData() { } /// <summary> /// the mathod to deal with data /// </summary> /// <returns>the data list which is used to show the flot </returns> [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)] public List<int?> GetDataList() { List<int?> dataList = new List<int?>(); DataForChart dataForChart = (DataForChart)HttpContext.Current.Session["dataForChart"]; if (dataForChart == null) { dataForChart = DataForChart.GetSingleton(); dataForChart.DataOne = 1; dataForChart.DataTwo = 0; } dataList.Add(dataForChart.DataOne); dataList.Add(dataForChart.DataTwo); dataList.Add(0); dataList.Add(1); dataList.Add(1); dataList.Add(2); return dataList; } } }
DataForChart.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace ShowFlot{ /// <summary> /// the class to store the data form the page /// </summary> public class DataForChart { private int? dataOne; private int? dataTwo; private static DataForChart singletonDataForChart = null; /// <summary> /// the mathod to get a single instance of class DataForChart /// </summary> /// <returns>the instance of DataForChart</returns> public static DataForChart GetSingleton() { Object thisLock = new Object(); if (singletonDataForChart == null) { lock (thisLock) { if (singletonDataForChart == null) { singletonDataForChart = new DataForChart(); } } } return singletonDataForChart; } private DataForChart() { } /// <summary> /// to get and set dataOne /// </summary> public int? DataOne { get { return dataOne; } set { dataOne = value; } } /// <summary> /// to get and set dataTwo /// </summary> public int? DataTwo { get { return dataTwo; } set { dataTwo = value; } } }}
2、使用TML控件:
文件结构如图:
dafault.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!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"><script type="text/javascript" src="js/jquery-1.6.js"></script> <script language="javascript" type="text/javascript" src="flot/jquery.flot.js"></script> <title>try a query</title> </head><body> <form id="form1" runat="server"> <div id="placeholder" style="width:600px;height:300px;"> </div> <div> <input id="button_submit" type="button" value="htmlButton" onclick="return Button_submit_onclick()" /><input id="dataone" type="text" /> <input id="datatwo" type="text" /></div> <script type="text/javascript"> $(function() { var dList = AjaxProDemo.DealWithFlotData.GetDataList().value; var d = []; for (var i = 0; i < dList.length; i++) { d.push([i, dList[i]]); } $.plot($("#placeholder"), [ { label: "getData", data: d } ], { series: { lines: { show: true }, points: { show: true } } }); }); function Button_submit_onclick() { var dataone = document.getElementById("dataone").value; var datatwo = document.getElementById("datatwo").value; var dataList = AjaxProDemo.DealWithFlotData.GetList(dataone, datatwo).value; var d = []; for (var i = 0; i < dataList.length; i++) { d.push([i, dataList[i]]); } $.plot($("#placeholder"), [ { label: "getData", data: d } ], { series: { lines: { show: true }, points: { show: true } } }); } </script> </form></body></html>
default.aspx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using AjaxProDemo;public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { AjaxPro.Utility.RegisterTypeForAjax(typeof(DealWithFlotData)); } }data.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web; namespace AjaxProDemo { /// <summary> /// to deal with the data to show the flot /// </summary> public class DealWithFlotData { public DealWithFlotData() { } /// <summary> /// getDataList at the page fist load /// </summary> /// <returns>return the data list</returns> [AjaxPro.AjaxMethod] public List<int?> GetDataList() { List<int?> datal = new List<int?>(); datal.Add(0); datal.Add(1); datal.Add(1); datal.Add(2); return datal; } /// <summary> /// to deal with the data from the page /// </summary> /// <param name="dataone"></param> /// <param name="datatwo"></param> /// <returns>return the data list that is dealed with</returns> [AjaxPro.AjaxMethod] public List<double> GetList(double dataone ,double datatwo) { List<double> dataList = new List<double>(); double dataOne = dataone / 2; double dataTwo = datatwo / 2; dataList.Add(dataOne); dataList.Add(dataTwo); dataList.Add(1); dataList.Add(2); return dataList; } } }
参考资料:
Ajax读写Session值 在服务器端page_load AjaxPro.Utility.RegisterTypeForAjax(typeof(test)); this.Button_Write.Attributes.Add( "onclick ", "WriteSession(); ");//写session this.Button_Read.Attributes.Add( "onclick ", "ReadSession(); ");//读session 其他写和读的方法 /// <summary> /// 写session /// </summary> /// <param name= "str "> </param> [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)] public void WriteSession(string str) { Session[ "UserName "] = str; } /// <summary> /// 读session /// </summary> /// <returns> </returns> [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)] public string ReadSession() { string str = " "; if (Session[ "UserName "] != null) { str = Session[ "UserName "].ToString(); } return str; } 客户端代码: //4、访问Session的值 //写入 function WriteSession() { var str = "HAHA "; test.WriteSession(str,CallBack_WriteSession); } function CallBack_WriteSession(res) { if(res.error == null) { alert( "OK "); } else { alert(res.error.message); } } //访问 function ReadSession() { test.ReadSession(CallBack_ReadSession); } function CallBack_ReadSession(res) { if(res.error == null) { alert(res.value); } else { alert(res.error.message); } }
参考网址:
http://hi.baidu.com/%C2%FC%C1%AA%B5%C4%C8%D5%D7%D3/blog/item/2111524d53b89af5d62afcca.html
- ajaxPro以及flot的一些小应用
- AjaxPro的简单应用
- AjaxPro的应用
- VS2008:AjaxPro.2 的应用
- ASP.NET AjaxPro的应用
- ASP.NET AjaxPro的应用
- ASP.NET AjaxPro的应用
- ajaxpro 应用
- 关于AjaxPro的一些注意点
- jquery的一些小应用
- GCD的一些小应用
- python一些小的应用
- RaidoButton的一些小应用
- **static 的作用以及一些小细节**
- 指针的概念以及一些小秘密
- 简介REST,以及RESTful的小应用!
- Cookie小结以及Cookie的小应用
- 对JSON的理解以及一些应用
- OMAP-L138通过SD卡挂载文件系统并启动
- jquery select option 操作
- JQuery上传插件Uploadify使用详解
- 常用技术学习网站
- 实达star5050lxd终端错设分辨率重启显示不正常
- ajaxPro以及flot的一些小应用
- stl hash_map详解
- Android中怎么启动关闭Service及功能解释
- 关于如何查看extjs api docs文档的方法
- Android 浅谈ViewStub
- 最小生成树
- C# 无边框窗体的移动,任务栏右键菜单,调整大小
- kindeditor/ckeditor编辑器加+图片自动上传成功
- Ogre3D基础教程一