利用zedGraph实现不定曲线数曲线的生成

这篇博客介绍了如何利用ZedGraph库在C#中动态生成不确定数量的曲线,涉及C#交互数组的使用、动态SQL语句构建、Split方法及数据处理。作者通过步骤展示了从选择供应商、构建SQL存储过程到填充数据到ZedGraph的过程,强调了SQL统计和数据组织的重要性。
摘要由CSDN通过智能技术生成

有一大堆的供应商的库存数据要按产品按供应商按时间段进行数据比较,同时产生图表,就是
利用zedGraph实现不定曲线数曲线的生成

还是贴张图来说一下吧。












其它的实现方式,我会在这个项目完成后总结出来,困扰我的地方在于:

如何通过所选择的供应商数目及时间段进行绘制图表呢?这里是供应商数目不定,时间段不定


关于:ZedGraph这东西我一直使用,可以要网上搜索到关于生成动态曲线(不定曲线数)的文章几乎没有。看来只能靠自己了。

返过头来看一下:要实现上面这玩艺,需要了解这些知识点

1.C# 交互数组的使用

(在最初的时候我选择了交互数组,但在中间过程中我又觉得自己错了,改回使用二维数组去实现,尽管数据是KO了,但就是不能画出图来,最后认真了解了一下C#数组的用法,还是走回原来的路使用了交互数组并达到想要的效果)

2.存储过程中相关的统计语句,主要是(行转列 ,Group by, 排序,动态SQL的构建)

gridview中的数据是通过存储过程去实现获取的,而这个存储过程是通过动态SQL去实现的。这个我稍后会整出来。

3.Split的用法,C#数组length的注意
事实证明到实现之前的时候,主要都是一些细枝末节的错误,看来我的基本功还不扎实啊!


现在我们来看一下实现的方式:

Step1.首先,我们通过一个页面进入供应商的比较



Step2.根据所选择的对象进行数据比较




这里的一个知识点在于,如何将选择的对象的ID值给传出去呢? 这就要用到Split的用法了。




            int numOfChecked = 0; //计算选中的对象个数

            for (int i = 0; i < this.gdvCompareObject.Rows.Count; i++)
            {
                bool isChecked = ((CheckBox)gdvCompareObject.Rows[i].FindControl("chkSelected")).Checked;
                if (isChecked)
                {
                    numOfChecked++;
                }
            }   //这里是累加所选择的对象个数

            if (numOfChecked < 2) //进行个数判断

            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<SCRIPT>alert('很抱歉,你至少要选择二个以上的对象才能进行比较.');</SCRIPT>");


            }
            else
            {

                string compareObjectList = string.Empty;

                for (int i = 0; i < gdvCompareObject.Rows.Count; i++)
                {


                    CheckBox chkSelectedAgentID = (CheckBox)gdvCompareObject.Rows[i].FindControl("chkSelected");

                    if (chkSelectedAgentID.Checked == true)
                    {
                        compareObjectList += gdvCompareObject.DataKeys[i]["Object_ID"] + ",";  //获取要比较的对象ID值串成一个字付串
                        

                    }
        

ZedGraph饼图、条形图和饼图Demo源码 ZedGraphV515是C#编写的.NET类库,提供了用户控件和web控件。它可以创建2D的线性图、条形图和饼图。 它功能完整且有详细的功能自定义。 基于LGPL协议开源,.NET 2.0 C#源代码)它的思路清淅,所以非常容易就上手. 几个注意点: 图片的保存路径设置:RenderedImagePath属性中设置,程序对该文件夹应该是有写和修改权限的 图片的输出格式:OutputFormat属性中设置,Png的推荐,比较清晰。 Chart ChartBorder 图表区域的边框设置 ChartFill 图表区域的背景填充 Legend 图表的注释标签显示设置项目,一组据对应一种颜色的注释 IsHStack 当有多个显示项的时候设置Y轴据是叠加的还是分开的 Xaxis 图表区域的X轴相关信息设置 AxisColor 坐标轴颜色 Cross 坐标的原点,可以设置坐标的偏移程度 CrossAuto 原点自动设置:True的话Cross的设置就无效了。 FontSpec X轴标题字体相关信息 Angle X轴标题字体显示时候的角度,0为水平 90为垂直 Fill X轴标题字体填充信息 ColorOpacity 透明度 IsScaled 设置X轴标题字体显示大小是否根据图的比例放大缩小 RangeMax 填充时候的最大倾斜度(有过渡色,没试过) RangeMin 填充时候的最小倾斜度(有过渡色,没试过) StringAlignment X轴标题字体排列(不清楚,没试过) IsOmitMag 是否显示指幂(10次方,没试过,似乎与IsUseTenPower有关系) IsPreventLabelOverlap 坐标显示是否允许重叠,如果False的话,控件会根据坐标长度自动消除部分坐标的显示状态 IsShowTitle X轴标题是否显示 IsTicsBetweenLabels 两个坐标之间是否自动显示分隔标志 IsUseTenPower 是否使用10次幂指 IsVisible 是否显示X轴
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值