。VB后台代码 '********************************** ' 功 能:用户产品销售统计 ' 作 者:dzh ' 创建时间:2006-06-05 ' 说 明: '********************************** Imports System Imports System.Web.UI Imports OWC Imports EasyClick.EasyBusiness '--业务逻辑 Imports EasyClick.EasyEntity '--数据实体 PublicClass StatProductOutClass StatProductOut Inherits Basepage '--继承于BasePage '页面加载 PrivateSub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load IfNot Page.IsPostBack Then Me.rdoQty.Checked =True Me.rdoMonth.Checked =True Me.rdoRect.Checked =True Me.txtBeginTime.Value = Today.AddYears(-1).AddMonths(1).Date Me.txtendTime.Value = Today.Date Dim myProductBusiness AsNew ProductBusiness Dim mybinder AsNew Binder mybinder.IsBlankLine =True '进出货类型绑定 - 0,入库类型;1,出库类型 mybinder.BindSelObject(Me.selInvType, myProductBusiness.GetInventoryType(Me.UserId, , , , , CInt(CommonBusiness.出库), )) '产品组绑定 mybinder.BindSelObject(Me.selGroup, Binder.SelObjectEnum.UserProductGroup, Me.UserId, -1, ) '绑定客户 mybinder.BindSelObject(Me.selCU, (New CustomerBusiness).GetCustomerList(Me.UserId)) Me.DGBind() EndIf Me.btnGO.Attributes.Add("onclick", "return OnSubmit();") Me.rdoPie.Attributes.Add("onclick", "javascript:document.getElementById('btnGO').click();") Me.rdoRect.Attributes.Add("onclick", "javascript:document.getElementById('btnGO').click();") Me.rdoCurve.Attributes.Add("onclick", "javascript:document.getElementById('btnGO').click();") End Sub '数据绑定 PrivateSub DGBind()Sub DGBind() Dim dPart As ProductBusiness.enumDatepart = ProductBusiness.enumDatepart.m Dim fld As ProductBusiness.enumStatfield = ProductBusiness.enumStatfield.qty Dim sDate AsDate=CDate(Me.txtBeginTime.Value) Dim eDate AsDate=CDate(Me.txtendTime.Value) Dim cuid AsLong=0 Dim invType AsLong=0 Dim gid AsString="" Dim pName AsString="" IfMe.rdoMonth.Checked =TrueThen dPart = ProductBusiness.enumDatepart.m ElseIfMe.rdoQuarter.Checked =TrueThen dPart = ProductBusiness.enumDatepart.q ElseIfMe.rdoYear.Checked =TrueThen dPart = ProductBusiness.enumDatepart.y Else ThrowNew ArgumentNullException("统计方式必选") EndIf IfMe.rdoMoney.Checked =TrueThen fld = ProductBusiness.enumStatfield.money ElseIfMe.rdoQty.Checked =TrueThen fld = ProductBusiness.enumStatfield.qty Else ThrowNew ArgumentNullException("统计项目必选") EndIf IfMe.selCU.HiddenValue.Trim() =String.Empty Then cuid =-1 Else cuid =CLng(Me.selCU.HiddenValue) EndIf IfMe.selInvType.HiddenValue.Trim() =String.Empty Then invType =-1 Else invType =CLng(Me.selInvType.HiddenValue) EndIf gid =Me.selGroup.HiddenValue.Trim() pName =Me.txtProductName.Value.Trim() ''///{ds=::::::::::::::[POST]T-SQL:产品销量统计:::::::::::} Dim ds As DataSet = (New ProductBusiness).StatProductOut(Me.UserId, dPart, fld, sDate, eDate, cuid, invType, gid, pName) Me.imgOWC.Visible =False If ds.Tables(0).Rows.Count >0Then IfNot ds.Tables(0).Rows(0).Item(0) Is DBNull.Value Then Me.imgOWC.Visible =True Me.CreatePic(ds) Else ds.Tables(0).Rows.RemoveAt(0) EndIf WithMe.dgLend .DataSource = ds .DataBind() For i AsInteger=0To ds.Tables(0).Columns.Count -1 IfMe.dgLend.Items(0).Cells(i).Text =0Then Me.dgLend.Items(0).Cells(i).Text =" " ElseIfMe.rdoMoney.Checked =TrueThen Me.dgLend.Items(0).Cells(i).Text =FormatNumber(Me.dgLend.Items(0).Cells(i).Text, 2, TriState.True, TriState.UseDefault, TriState.True) EndIf Next EndWith EndIf End Sub 'OWC绘图 PrivateSub CreatePic()Sub CreatePic(ByRef ds As DataSet) '//创建ChartSpace对象来放置图表 Dim owcChartSpace As OWC.ChartSpace =New OWC.ChartSpace '////在ChartSpace对象中添加图表,Add方法返回chart对象 Dim owcChart As OWC.WCChart = owcChartSpace.Charts.Add '//指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到 IfMe.rdoCurve.Checked =TrueThen'/chChartTypeSmoothLine 平滑曲线图 owcChart.Type = ChartChartTypeEnum.chChartTypeSmoothLine ElseIfMe.rdoPie.Checked =TrueThen'/chChartTypePie 饼图 owcChart.Type = ChartChartTypeEnum.chChartTypePie Else'/chChartTypeColumnClustered 柱状图 owcChart.Type = OWC.ChartChartTypeEnum.chChartTypeColumnClustered EndIf '//指定图表是否需要图例 owcChart.HasLegend =True owcChart.Legend.Font.Size =10 '//给定标题 owcChart.HasTitle =True owcChart.Title.Caption ="产品"&IIf(Me.rdoQty.Checked =True, "销量", "销售额") &"统计图" owcChart.Title.Font.Bold =True'粗体 owcChart.Title.Font.Size =12'字体大小为12 owcChart.Title.Font.Color ="#FF0000" '添加一个series owcChart.SeriesCollection.Add(0) IfMe.rdoPie.Checked =FalseThen '//给定x,y轴的图示说明 owcChart.Axes(0).HasTitle =True owcChart.Axes(0).Title.Caption ="Y : "&IIf(Me.rdoQty.Checked =True, "销量", "销售额") owcChart.Axes(1).HasTitle =True owcChart.Axes(1).Title.Caption ="X : "&IIf(Me.rdoMonth.Checked =True, "月份", IIf(Me.rdoYear.Checked =True, "年份", "季度")) owcChart.Axes(0).Font.Size =9 owcChart.Axes(1).Font.Size =9 Else '显示百分比标签 'DataLabelsCollection表示图表的数据标志,这里就是显示百分比的标签 With owcChart.SeriesCollection.Item(0).DataLabelsCollection.Add .HasValue =False'因为并行图没有Y轴数据,所以把这个值设置成False .HasPercentage =True'指定数据标志当前显示其百分比值,该属性只适用于饼图、圆环图和堆积图 .Font.Size =10'设置数据标志字体为10象素 .Interior.Color =RGB(255, 255, 255) '数据标志标签背景色为白色 EndWith EndIf '计算数据 '*categories 和 values 可以用tab分割的字符串来表示* Dim strSeriesName AsString="图例 1" Dim strCategory AsString="" Dim strValue AsString="" For j AsInteger=0To ds.Tables(0).Columns.Count -1 strCategory += (CStr(ds.Tables(0).Columns(j).Caption) + ControlChars.Tab) strValue += (CStr(ds.Tables(0).Rows(0).Item(j)) + ControlChars.Tab) Next '给定series的名字 IfMe.rdoPie.Checked =FalseThen owcChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimSeriesNames, ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName) EndIf '给定分类 owcChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimCategories, ChartSpecialDataSourcesEnum.chDataLiteral, strCategory) '给定值 owcChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimValues, ChartSpecialDataSourcesEnum.chDataLiteral, strValue) '//将OWC处理结果转换成Gif图象输出到浏览器中显示 owcChartSpace.ExportPicture(Server.MapPath("") +"\picOWC.gif", "gif", 770, 350) '销毁OWC对象 owcChart =Nothing owcChartSpace.Clear() '获取图片流 Me.imgOWC.ImageUrl ="ReadPic.aspx" End Sub '执行查询 PrivateSub btnGO_Click()Sub btnGO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGO.Click Me.DGBind() End Sub End Class
'///<summary>ReadPic.aspx.vb</summary> Imports System Imports System.Drawing Imports System.Drawing.Image PrivateSub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load '在此处放置初始化页的用户代码 Dim bmp As Bitmap =New Bitmap(Server.MapPath("") +"\picOWC.gif", True) Response.ContentType ="image/gif" bmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif) Response.Flush() bmp.Dispose() End Sub