急求!b/s结构动态实时曲线图源码。
刚接到领导安排的任务,需要实现实时动态曲线效果图,y轴是重量值(范围固定),x轴是时间轴(15分钟的范围),要求每4秒钟从数据库中读取一次重量值,实现实时动态曲线的效果,时间轴不断向前更新,像股票效果图那样无刷新闪动的效果,最后曲线图由b/s结构发布,以前从没做过类似的项目,领导催着要,在网上也查了些资料,还是没能做出来,不知道有哪位大侠能帮忙实现,可以联系我0411-62619358葛(女)。
[解决办法]
女。。。。。。重点是这个。
好吧妹子!
我们也要做这个东西但是,用的是第三方(收费)
微软自带一个报表的软件可以做到这个功能。水晶报表你懂的
[解决办法]
用flex自己画个图标呗.
你完全可以采用flashchart 的falsh图表 然后在一个页面内嵌个iframe然后刷新这个嵌入的页面。
嵌入的页面用jq异步访问你数据库。 $(function(){ ...})
[解决办法]
好同学,我都是跪着求工程师,憋了一个月,才能给点东西。
姐妹居然知道上网花钱买,好员工啊。
http://www.oksvn.com/Download/Detail-160.shtml 以前用owc11写的。
向楼上说的用水晶报表也能做;用微软的mschart也能做
[解决办法]
HighCharts控件可以实现,参考demo:
http://blog.csdn.net/nuaazdh/article/details/6754928
[解决办法]
我和你差不多,最后用的这个Visifire 是Silverlight一个控件,
[解决办法]
using System;
using System.Web;
/// <summary>
/// Summary description for AsnyHandler
/// </summary>
public class AsnyHandler : IHttpAsyncHandler
{
public AsnyHandler()
{
}
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
{
//myAsynResult为实现了IAsyncResult接口的类,当不调用cb的回调函数时,该请求不会返回到给客户端,会一直处于连接状态
myAsynResult asyncResult = new myAsynResult(context, cb, extraData);
String content = context.Request.Params["content"];
System.Threading.Thread.Sleep(5000);
System.Data.SqlClient.SqlParameter[] p = new System.Data.SqlClient.SqlParameter[1];
p[0] = new System.Data.SqlClient.SqlParameter("@sid", System.Data.SqlDbType.VarChar, 2000);
p[0].Value = "";
System.Data.DataSet ds= dosoft.DAL.DbHelperSQL.RunProc("pr_UnitState", p);
string json=Newtonsoft.Json.JsonConvert.SerializeObject(ds.Tables[0]);
//向Message类中添加该消息
Messages.Instance().AddMessage(json, asyncResult);
return asyncResult;
}
#region 不必理会
public void EndProcessRequest(IAsyncResult result)
{
}
public bool IsReusable
{
get { return false; ; }
}
public void ProcessRequest(HttpContext context)
{
}
#endregion
}
public class myAsynResult : IAsyncResult
{
bool _IsCompleted = false;
private HttpContext context;
private AsyncCallback cb;
private object extraData;
public myAsynResult(HttpContext context, AsyncCallback cb, object extraData)
{
this.context = context;
this.cb = cb;
this.extraData = extraData;
}
private string _content;
public string Content
{
get { return _content; }
set { _content = value; }
}
#region IAsyncResult接口
public object AsyncState
{
get { return null; }
}
public System.Threading.WaitHandle AsyncWaitHandle
{
get { return null; }
}
public bool CompletedSynchronously
{
get { return false; }
}
public bool IsCompleted
{
get { return _IsCompleted; }
}
#endregion
//在Message类中的添加消息方法中,调用该方法,将消息输入到客户端,从而实现广播的功能
public void Send(object data)
{
string s = this.Content;
//context.Response.Write(this.Content);
context.Response.Write(s);
if (cb != null)
{
cb(this);
}
_IsCompleted = true; ;
}
}
using System;
using System.Collections.Generic;
using System.Web;
/// <summary>
/// Summary description for Messages
/// </summary>
public class Messages
{
//记录所有请求的客户端
List<myAsynResult> clients = new List<myAsynResult>();
#region 实现该类的单例
private static readonly Messages _Instance = new Messages();
private Messages()
{
}
public static Messages Instance()
{
return _Instance;
}
#endregion
public void AddMessage(string content, myAsynResult asyncResult)
{
//当传入的内容为"-1"时,表示为建立连接请求,即为了维持一个从客户端到服务器的连接而建立的连接
//此时将该连接保存到 List<myAsynResult> clients中,待再有消息发送过来时,该连接将会被遍历,并且会将该连接输出内容后,结束该连接
if (content == "-1")
{
clients.Add(asyncResult);
}
else
{
//将当前请求的内容输出到客户端
asyncResult.Content = content;
asyncResult.Send(null);
//否则将遍历所有已缓存的client,并将当前内容输出到客户端
foreach (myAsynResult result in clients)
{
result.Content = content;
result.Send(null);
}
//清空所有缓存
clients.Clear();
}
}
}
<httpHandlers>
<add path="comet_broadcast.do" type="AsnyHandler" verb="POST,GET"/>
</httpHandlers>
<script language="javascript" type="text/javascript">
$(document).ready(function () {
//加载时间
wait();
function wait()
{
$.post("comet_broadcast.do", { content: "-1" },
function (data, status)
{
data=eval(data);
for (var i=0;i<data.length;i++)
{
//以下是我的代码 你可以直接修改 然后绑定到chart上 就OK了
var id=data[i].生产单元编码;
var name=data[i].生产单元;
var state=data[i].状态;
var rid=data[i].任务号;
var jid=data[i].机床号;
var units=data[i].订货单位;
var top_id=data[i].上级生产单元编码;
var top_name=data[i].上级生产单元;
if(state=="使用")
{
$("#A"+id).css("background-color","red");
$("#A"+id).html(jid+"<br>"+units);
}
else
{
$("#A"+id).css("background-color","green");
}
}
wait();
}, "html"
);
}
});
</script>