chartControl.SeriesDataMember = "Series";
chartControl.SeriesTemplate.ArgumentDataMember = "Arguments";
chartControl.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "Values" });
this.chartControl.DataSource = this.pivotGridControl; //pivotGridControl也是dev的一个控件这是基本的赋数据源的代码……但是chartControl在画图的时候特别的慢,尤其是数据稍多的时候!
所以想加一个进度条!
搞了好久效果皆不理想,原因是没有找到这个控件关于表绘图结束相关的事件,方法或者属性.
所以……达人有做过类似的,或者知道的方法,原理的,有代码更好!
300分送上…………(额……最多100分,悲剧!如能解决,另给300)
解决方案 »
- C#中线程的销毁
- 救命!如何在Datagridview中显示这样的内容?
- 递归的方法,在调用自身多次,最终能够将方法完全执行完毕后,就返回上一次调用,如果上一次调用也完全执行完毕,就返回上上次调用,是这样么?
- 接口和实现分离,如一个抽象类,有多个派生类,书上说客户程序不必关心具体什么类,但是在客户程序中新建对象时要知道具体是什么子类。。
- 初学者求助,WEB服务器不是ASP.NET1.1版本
- C#加密问题
- 天啦。现在都2008年了。我这辈子真的要废了。
- EF的CodeFirst模型修改时,服务器上的数据库怎么更新
- 请问
- 至少一个参数没有被指定值
- Head First 设计模式里 工厂模式怎么理解
- Sqlserver数据库远程备份
进度条只和数据有关系,和这个控件没关系的,控件只是一个显示数据的"工具"而已.至于你要数据自己传到它的里面去是自己控制的
额……我要的就是他绘图的一个状态,好来控制进度。而且它的数据源不是一个表,而是pivotGridControl控件中所选的数据(可以是任意多个不相邻得cell),所以我想在它绘图的时候根据它的绘图来确定!继续坐等达人……
估计用 EevExpress 插她 控件的不多
#region MarqueeProcess 显示连续滚动的进度条
/// <summary>
/// 显示连续滚动的进度条
/// </summary>
public void MarqueeProcess()
{
this.Hide();
m_ProgressThread = new Thread(new ThreadStart(ProgressAutoRun));
m_ProgressThread.IsBackground = true;
m_ProgressThread.Start();
} private void ProgressAutoRun()
{
frmProgress fp = new frmProgress();
fp.StepValue = 1;
fp.NewProcess(100); while (true)
{
if (fp.CurProgressValue >= fp.MaxProgressValue)
fp.SetProcessValue(fp.MinProgressValue);
else
fp.SetProcessValue(fp.CurProgressValue + fp.StepValue);
fp.Refresh();
Thread.Sleep(100);
}
} #endregion private Thread m_ProgressThread; #region StepValue 阶段进度值
/// <summary>
/// 阶段进度值
/// </summary>
public int StepValue
{
get
{
return this.progressBar1.Step;
}
set
{
this.progressBar1.Step = value;
}
}
#endregion #region CurProgressValue 当前进度值
/// <summary>
/// 当前进度值
/// </summary>
public int CurProgressValue
{
get
{
return this.progressBar1.Value;
}
}
#endregion #region MinProgressValue 最低进度值
/// <summary>
/// 最低进度值
/// </summary>
public int MinProgressValue
{
get
{
return this.progressBar1.Minimum;
}
set
{
this.progressBar1.Minimum = value;
}
}
#endregion #region MaxProgressValue 最高进度值
/// <summary>
/// 最高进度值
/// </summary>
public int MaxProgressValue
{
get
{
return this.progressBar1.Maximum;
}
}
#endregion #region NewProcess 创建并显示进度条
/// <summary>
/// 创建并显示进度条
/// </summary>
/// <param name="progressBarMaximum"></param>
public void NewProcess(int ProgressMaximum)
{
this.progressBar1.Style = ProgressBarStyle.Blocks;
this.progressBar1.Minimum = 0;
this.progressBar1.Maximum = ProgressMaximum;
this.progressBar1.Value = 0;
this.TopMost = true;
this.Visible = true;
}
#endregion #region HideProcess 隐藏进度条
/// <summary>
/// 隐藏进度条
/// </summary>
public void HideProcess()
{
if (m_ProgressThread != null)
{
m_ProgressThread.Abort();
m_ProgressThread = null;
}
if (this.Visible)
{
this.Visible = false;
}
}
#endregion #region SetProcessValue 设置进度值
/// <summary>
/// 设置进度值
/// </summary>
/// <param name="value">进度值</param>
public void SetProcessValue(int value)
{
if (value < this.progressBar1.Minimum)
value = this.progressBar1.Minimum;
if (value > this.progressBar1.Maximum)
value = this.progressBar1.Maximum; this.progressBar1.Value = value;
this.Refresh();
}
#endregion
frmProgress pmTest = new frmProgress(); pmTest.MarqueeProcess(); // 执行很慢的操作代码中间放 pmTest.HideProcess();
<html>
<head>
<title>ajaxguagedemo</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 returnresponse()
{
urls="ajaxguagedemo.aspx?guage=1";
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("GET",urls,true);
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4)
{
temp=xmlHttp.responseText;
document.getElementById("ddf").innerText=temp;
if(temp!="100%")
{
returnresponse();
}伊图教程网[www.etoow.com]
http://www.etoow.com/html/2007-08/1186838995.html
}
}
xmlHttp.send(urls);
}
</script>
</head>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<input type=button onclick="returnresponse()" value=1111111>
<div id=ddf></div>
</form>
</body>
</html>
后台代码如下: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.Threading;
namespace guagedemo
{
/// <summary>
/// ajaxguagedemo 的摘要说明。
/// </summary>
public class ajaxguagedemo : System.Web.UI.Page
{
static public int percent=0;//静态变量,记录百分比
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(Request.QueryString["start"]!=null)
{
startThread();//开始新进程处理查数程序
}
if(Request.QueryString["guage"]!=null)
{
ajaxResponse();//响应ajax,返回百分比
}
}
private void guage()伊图教程网[www.etoow.com]
http://www.etoow.com/html/2007-08/1186838995-1.html
{
for(int i=0;i<100;i++)
{
percent++;
Thread.Sleep(500);
}
}
public void startThread()
{
System.Threading.Thread thread=new System.Threading.Thread(new System.Threading.ThreadStart(guage));
thread.Start();
}
private void ajaxResponse()
{
Response.Write(percent.ToString()+"%");
Response.Flush();
Response.Close();
} Web 窗体设计器生成的代码
}
}
用Sleep(int n); 然后连续相加得到进度
用Sleep(int n); 然后连续相加得到进度
不过 这个进度条 是循环滚动 目的只是提示用户当前 程序运行正常,和控制其操作.. private void ShowWaitingForm()
{
frmWaiting pFrm = new frmWaiting(); //自己做的等待窗体
pFrm.ShowInTaskbar = false;
pFrm.TopMost = true;
pFrm.ShowDialog();
}在你的需要开始显示程序中加入
Thread thread = new Thread(ShowWaitingForm);
thread.Start();需要它不显示的时候就 杀掉它 if (thread != null)
{
//thread.Suspend();
thread.Abort();//杀掉它
thread.Join();
}
//加载数据 最快的方式############################ HistoryColtDataSeries.Points.Clear();
HistoryColtDataSeries.Points.BeginUpdate(); SqlConnection mysqlConn = new SqlConnection(szDBConnStr);
SqlCommand mysqlCmd = mysqlConn.CreateCommand();
mysqlCmd.CommandText = szQueryStr;
SqlDataAdapter MyDataAdapter = new SqlDataAdapter();
MyDataAdapter.SelectCommand = mysqlCmd;
DataSet MyDataSet = new DataSet();
mysqlConn.Open(); int nRowNums = MyDataAdapter.Fill(MyDataSet, "ColtRecordSet");
mysqlConn.Close();
DataTable MyDataTable = MyDataSet.Tables["ColtRecordSet"]; DevExpress.XtraCharts.SeriesPoint sp;
Double[] bi; foreach (DataRow MyDataRow in MyDataTable.Rows)
{
sp = new DevExpress.XtraCharts.SeriesPoint();
sp.Argument = MyDataRow["Collect_Time"].ToString();
bi = new double[1];
bi[0] = Double.Parse(MyDataRow["Collect_Value"].ToString());
sp.Values = bi ; HistoryColtDataSeries.Points.Add(sp); this.progressBar_LoadData.Value++;
Thread.Sleep(0); //让出运行权 让UI主线程 有时间更新UI界面(进度条)
} HistoryColtDataSeries.Points.EndUpdate(); //################################################################################################################### this.progressBar_LoadData.Value = nCount + 1; chartControl1.Series.AddRange(new Series[] { HistoryColtDataSeries }); // 把串行数据对象 添加到图表 this.label_Process.Text = "数据加载完成并成功更新显示!共计" + nCount + "点数据!";