AspxPivotGrid具有很好的表格样式体验,WebChartControl也是个很内容丰富的做图控件,我希望实现的功能是这样的,

处理题库统计分析图表,用户点AspxPivotGrid绑定知识点的行数据(DataArea),显示出该知识点的试题数量分布情况。

程序界面如下:

AspxPivotGrid没有对应的Server端Click事件处理DataArea区域的动作,因此我的做法是用AspxPivotGrid的ClientSideEvent处理,

我选用的是<ClientSideEvents CellClick="function(s, e) { pnlChart.PerformCallback(e.RowValue);}" />用e.RowValue传递知识点的参

数到后台Server端,在ASPxCallbackPanel的PerformCallback事件里处理图表动态显示。

特别提醒:用ClientEvent事件触发PerformCallback,后台处理WebChartControl图表,一定要把WebChartControl控件放在ASPxCallbackPanel

里,用ASPxCallbackPanel的PerformCallback去传参数到后台,然后才能在前台显示数据,否则,弄半天图表控件就是不显示图,我折腾了一天这个问题,

希望看官注意,别说哥没提醒你哈!

点上图红圈的DataArea格以后,运行结果如下:

贴代码如下:

aspx文件:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage/NormalPage.master" AutoEventWireup="false" CodeFile="ThemeSummaryView.aspx.cs" Inherits="Base_ThemeSummaryView" %>
<%@ Register assembly="DevExpress.Web.ASPxPivotGrid.v10.2" namespace="DevExpress.Web.ASPxPivotGrid" tagprefix="dx" %>
<%@ Register assembly="DevExpress.Web.ASPxEditors.v10.2" namespace="DevExpress.Web.ASPxEditors" tagprefix="dx" %>
<%@ Register assembly="DevExpress.XtraCharts.v10.2" namespace="DevExpress.XtraCharts" tagprefix="dxc" %>
<%@ Register assembly="DevExpress.XtraCharts.v10.2.Web" namespace="DevExpress.XtraCharts.Web" tagprefix="dxc" %>
<%@ Register assembly="DevExpress.Web.v10.2" Namespace="DevExpress.Web.ASPxCallbackPanel" TagPrefix="dx" %>
<%@ Register assembly="DevExpress.Web.v10.2" Namespace="DevExpress.Web.ASPxPanel" TagPrefix="dx" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
    <table width="100%" cellpadding=0 cellspacing=0 >
        <tr>
            <td>
                <dx:ASPxPivotGrid ID="grvThemeBase" runat="server" Width="1200px"
                    DataSourceID="dsoExamBase"  ClientInstanceName="pivotThemeBase"  ClientIDMode="AutoID" >                 
                    
                    <Fields>                        
                        <dx:PivotGridField Area="RowArea"  FieldName="CatalogName" Caption="考试科目" ID="rowCatalogName" AreaIndex="0"  />
                        <dx:PivotGridField Area="RowArea"   FieldName="PointItem" Caption="考试知识点" ID="rowPointName" AreaIndex="1" />                                                                               
                        <dx:PivotGridField Area="ColumnArea"   FieldName="GradeName" Caption="难度" ID="rowGradeName" AreaIndex="0"  />                 
                        <dx:PivotGridField Area="ColumnArea"   FieldName="StyleName" Caption="题型" ID="rowStyleName" AreaIndex="1"  />                                                                                     
                        <dx:PivotGridField Area="DataArea"   Caption="难度" SummaryType="Count" FieldName="GradeName" ID="datGradeName" AreaIndex="0"  />           
                    </Fields>
                    <OptionsPager RowsPerPage=10 />                       
                    <OptionsView  ShowHorizontalScrollBar="True"  ShowRowHeaders="False"  ShowRowTotals="False" ShowColumnTotals="False"    ShowColumnHeaders="False" ShowDataHeaders="False"    DataHeadersDisplayMode="Popup" ShowFilterHeaders="False"/>                   
                    <OptionsChartDataSource  FieldValuesProvideMode="DisplayText" />
                    <ClientSideEvents CellClick="function(s, e) { pnlChart.PerformCallback(e.RowValue);}" />
                </dx:ASPxPivotGrid>   
            </td>
        </tr>
        <tr>
            <td>
                <dx:ASPxCallbackPanel ID="pnlChartPanel" runat="server" Width="200px" OnCallback="pnlChartPanel_Callback"  ClientInstanceName="pnlChart">
                    <PanelCollection>
                        <dx:PanelContent ID="PanelContent1" runat="server" SupportsDisabledAttribute="True">
                            <dxc:WebChartControl ID="WebChartTheme" runat="server"  
                                Width="850px" Height="300px"   
                                OnCustomDrawSeriesPoint="WebChartTheme_CustomDrawSeriesPoint"
                                ClientIDMode="AutoID" IndicatorsPaletteName="Default"
                                DataSourceID="dsoExamTheme">
                            </dxc:WebChartControl>
                        </dx:PanelContent>
                    </PanelCollection>
                </dx:ASPxCallbackPanel>           
            </td>
        </tr>
    </table>    
    <asp:ObjectDataSource ID="dsoExamBase" runat="server" SelectMethod="GetBaseThemeList" TypeName="OLExamLibrary.OLExamBaseTheme" >               
    </asp:ObjectDataSource>
    <asp:ObjectDataSource ID="dsoExamTheme" runat="server" SelectMethod="GetThemeStatistic" TypeName="OLExamLibrary.OLExamBaseTheme" >               
    </asp:ObjectDataSource>
</asp:Content>

cs文件:

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using OLExamLibrary; 
using DevExpress.XtraCharts;
using DevExpress.XtraCharts.Web;

public partial class Base_ThemeSummaryView : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        
    }

protected void pnlChartPanel_Callback(object sender, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)   
    {
        string strPointPara= e.Parameter;

string []strItem = strPointPara.Split('-');

OLExamBaseTheme objTheme = new OLExamBaseTheme();

DataTable dtbTheme = objTheme.GetThemeStatistic(strItem[0]);

//绘图
        DrawGraphic(dtbTheme);
        
    }

/// <summary>
    /// 根据传进的数据集合绘图
    /// </summary>
    /// <param name="dtbPointTheme"></param>
    private void DrawGraphic(DataTable dtbPointTheme)
    {
        WebChartTheme.Series.Clear();

Series sesPoint = new Series("数量", ViewType.Bar);
        ((SideBySideBarSeriesView)sesPoint.View).ColorEach = true;

WebChartTheme.Series.Add(sesPoint);

sesPoint.ArgumentScaleType = ScaleType.Qualitative;
        sesPoint.ValueScaleType = ScaleType.Numerical;

for (int i = 0; i < dtbPointTheme.Rows.Count; i++)
        {
            sesPoint.Points.Add(new SeriesPoint(dtbPointTheme.Rows[i]["StyleName"].ToString(), dtbPointTheme.Rows[i]["ThemeCount"]));
        }

sesPoint.SeriesPointsSorting = SortingMode.Ascending;
        ((XYDiagram)WebChartTheme.Diagram).AxisX.Label.Angle = -30;                                   //坐标值倾斜30度
        ((XYDiagram)WebChartTheme.Diagram).AxisX.Label.Antialiasing = true;                           //横坐标坐标值倾斜显示
        
        
    }

protected void WebChartTheme_CustomDrawSeriesPoint(object sender, CustomDrawSeriesPointEventArgs e)
    {

}

}

AspxPivotGrid和WebChartControl数据联动处理日志的更多相关文章

  1. BPM配置故事之案例14-数据字典与数据联动

    小明遇到了点麻烦,他昨天又收到了行政主管发来的邮件,要求把出差申请单改由H3 BPM进行,表单如下 行政主管的出差申请表 小明对表单进行了调整,设计出了一份适合在系统中使用的表单,但在"出差 ...

  2. pentaho cde数据联动,下拉框,文本框,图形

    先看一下效果: 开源bi工具pentaho数据联动,和传统意义上的更改数据不同,pentaho cde 需要一个监听来动态传值. 说一下需要注意的几个地方吧 1.参数是不能在两个图表中直接传递的,必须 ...

  3. 批量迁移Oracle数据文件,日志文件及控制文件

    有些时候需要将Oracle的多个数据文件以及日志文件重定位或者迁移到新的分区或新的位置,比如磁盘空间不足,或因为特殊需求.对于这种情形可以采取批量迁移的方式将多个数据文件或者日志文件实现一次性迁移.当 ...

  4. rabbitmq更换数据文件和日志文件的存放位置

    原来的默认位置是/var下 需要将这些文件更换位置 1.先创建数据文件和日志文件存放位置的目录并给权限 mkdir -p /usr/local/rabbitmq/mnesia mkdir -p /us ...

  5. easyui datagrid行编辑中数据联动

    easyui的datagrid中行内编辑使用数据联动.即:当编辑产品编号时,该行的产品名称自动根据产品编号显示出来. 在编辑中获取当前行的索引 function getRowIndex(target) ...

  6. ORACLE体系结构一 (物理结构)- 数据文件、日志文件、控制文件和参数文件

    一.物理结构Oracle物理结构包含了数据文件.日志文件.控制文件和参数文件 1.数据文件每一个ORACLE数据库有一个或多个物理的数据文件(data file).一个数据库的数据文件包含全部数据库数 ...

  7. avalon2学习教程11数据联动

    在许多表单应用,我们经常遇到点击一个复选框(或下拉框)会引发旁边的复选框(或下拉框)发生改变,这种联动效果用avalon来做是非常简单的.因为avalon拥有经典MVVM框架的一大利器,双向绑定!绝大 ...

  8. AspxGridView ComboBoxComlum列数据联动

    第1步: 页面放置AspxGridView控件, 设置列ComboBox1, ComboBox2列, 拟通过ComboBox1列更新联动ComboBox2列. 两个数据列均为"ComboBo ...

  9. 数据文件 和日志文件 收缩 Sql Server

    A. 将数据文件收缩到指定的目标大小 以下示例将 UserDB 用户数据库中名为 DataFile1 的数据文件的大小收缩到 7 MB. 复制 USE UserDB; GO DBCC SHRINKFI ...

随机推荐

  1. go语言基础之结构体普通变量初始化

    1.结构体 1.1.结构体类型 有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年龄/地址等属性.显然单独定义以上变量比较繁琐,数据不便于管理. 结构体是一种聚合的数 ...

  2. Java 线程内异常处理

    Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个异常而被终止,导致这个线程的终结.最麻烦的是,在线程中抛出的异常即使使用try...ca ...

  3. CSS结构和层叠

    每个合法的文档都会生成一个文档树,从而能根据元素的祖先,属性,兄弟元素等创建选择器来选择元素.有了这个结构树,选择器才能起作用,这也是CSS继承的核心.继承是从一个元素向其后代元素传递属性值所采用的机 ...

  4. 你对position的了解有多少?

    此文根据Steven Bradley的<How Well Do You Understand CSS Positioning?>所译,整个译文带有我自己的理解与思想,如果译得不好或不对之处 ...

  5. 游戏服务器框架:Leaf/go

    Leaf 是一个使用 Go 语言开发的开源游戏服务器框架,注重运行效率并追求极致的开发效率.Leaf 适用于几乎所有的游戏类型.其主要的特性: 良好的使用体验.Leaf 总是尽可能的提供简洁和易用的接 ...

  6. (算法)判断字符串中是否包含HelloWorld

    题目: 给定某字符串,判断该字符串中是否包含HelloWorld,出现HelloWorld不一定要连续,但顺序不变,如“HeByello,ByeWorByeld”就包含“HelloWorld”. 思路 ...

  7. C#.NET常见问题(FAQ)-Combobox如何设置不可以编辑

    设置它的DropDownStyle为DropDownList即可     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123   ...

  8. JavaScript 之 截取字符串函数

    一.函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”; arr=theString.split(”|”); //a ...

  9. 使用第三方类、库需要注意的正则类RegexKitLite的使用

    一.到http://regexkit.sourceforge.net/下载RegexKitLite类,添加到项目中: 因为RegexKitLite使用ICU库,所以需要动态链接到/usr/lib/li ...

  10. javaweb笔记全套

    Lesson 1 一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Pr ...