经过前期一段时间对WPF的学习了解,相信大家对WPF有了一定的了解。今天我们一起来了解使用Component One(简称C1)的WPF控件制作CUBE浏览工具。其实这个OLAP控件官方已经有了很详细的示例。

下面是C1的WPF版所有的控件信息:

所有WPF控件信息:

OLAP组件:

不管官方介绍有多好,我们还是要自己体验了控件使用才能知道到底好不好用,我们开始创建项目。

1、新建WPF项目,名称CubeAnalysis,引入C1控件

2、 在UI界面中先要引入C1的引用xmlns:olap="clr-namespace:C1.WPF.Olap;assembly=C1.WPF.Olap.4" xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml"

3、在UI界面中调用OLAP控件

界面代码如下:

 <Window x:Class="CubeAnalysis.MainWindow"

         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" WindowState="Maximized"

         Title="MainWindow" Height="" Width="" xmlns:olap="clr-namespace:C1.WPF.Olap;assembly=C1.WPF.Olap.4" xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml">

     <Grid x:Name="LayoutRoot">

         <Grid.RowDefinitions>

             <RowDefinition Height="Auto" />

             <RowDefinition />

         </Grid.RowDefinitions>

         <StackPanel Orientation="Horizontal" Grid.ColumnSpan="">

             <TextBlock Text="C1.WPF.Olap: Cube Analysis" VerticalAlignment="Center" Margin="10,5" FontSize="" FontWeight="Bold" />

             <Button Content="更新" Margin="10,5" Width="" Click="Button_Click" />

             <Button Content="取消更新" Margin="10,5" Width="" Click="Button_Click_1" />

         </StackPanel>

         <olap:C1OlapPage x:Name="_c1OlapPage" Grid.Row="" />

         <StackPanel x:Name="info" Grid.Row="" Visibility="Collapsed" HorizontalAlignment="Center" VerticalAlignment="Center">

             <c1:C1ProgressBar x:Name="progress" Width="" Height="" />

             <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">

                 <TextBlock HorizontalAlignment="Center" Text="Loading" Margin="0,4,4,0" FontSize="" FontWeight="Bold"/>

                 <TextBlock x:Name="txt" HorizontalAlignment="Center" Margin="0,4,0,0" FontSize="" FontWeight="Bold"/>

             </StackPanel>

         </StackPanel>

     </Grid>

 </Window>

4、后端加载数据连接cube,只需要使用ConnectCube函数即可解决多维数据集获取问题。

后台代码如下:

 using System;

 using System.Collections.Generic;

 using System.Linq;

 using System.Text;

 using System.Windows;

 using System.Windows.Controls;

 using System.Windows.Data;

 using System.Windows.Documents;

 using System.Windows.Input;

 using System.Windows.Media;

 using System.Windows.Media.Imaging;

 using System.Windows.Navigation;

 using System.Windows.Shapes;

 /*************作者:黄昏前黎明后***************************************************

 *   作者:黄昏前黎明后

 *   CLR版本:4.0.30319.42000

 *   创建时间:2018-04-18 13:12:57

 *   命名空间:CubeAnalysis

 *   唯一标识:57a428fc-1bad-4455-ae05-2b591db69167

 *   机器名称:HLPC

 *   联系人邮箱:hl@cn-bi.com

 *

 *   描述说明:

 *   修改历史:

 *****************************************************************/

 namespace CubeAnalysis

 {

     /// <summary>

     /// Interaction logic for MainWindow.xaml

     /// </summary>

     public partial class MainWindow : Window

     {

         public MainWindow()

         {

             InitializeComponent();

             //绑定OLAP数据源

             _c1OlapPage.Loaded += (s, ea) =>

             {

                 //准备连接数据源和cube名称

                 string connectionString = @"Data Source=HLPC;Initial Catalog=AdventureWorksDW2014Multidimensional-EE";

                 string cubeName = "Adventure Works";

                 try

                 {

                     _c1OlapPage.OlapPanel.ConnectCube(cubeName, connectionString);

                     ////默认显示数据

                     var olap = _c1OlapPage.OlapEngine;

                     olap.BeginUpdate();

                     olap.ColumnFields.Add("Color");

                     olap.RowFields.Add("Category");

                     olap.ValueFields.Add("Order Count");

                     olap.EndUpdate();

                 }

                 catch (Exception ex)

                 {

                     MessageBox.Show(ex.Message);

                 }

                 _c1OlapPage.OlapEngine.Updated += (s1, e) =>

                 {

                     _c1OlapPage.OlapGrid.Opacity = ;

                     info.Visibility = Visibility.Collapsed;

                 };

                 //进度条处理

                 _c1OlapPage.OlapEngine.UpdateProgressChanged += (s1, e) =>

                 {

                     _c1OlapPage.OlapGrid.Opacity = 0.4;

                     info.Visibility = Visibility.Visible;

                     progress.Value = (int)e.ProgressPercentage;

                     txt.Text = e.ProgressPercentage.ToString() + " %";

                 };

             };

         }

         void Button_Click(object sender, RoutedEventArgs e)

         {

             // 刷新

             _c1OlapPage.OlapPanel.OlapEngine.Update();

         }

         private void Button_Click_1(object sender, RoutedEventArgs e)

         {

             // 取消更新

             _c1OlapPage.OlapPanel.OlapEngine.CancelUpdate();

         }

     }

 }

5、运行结果:

看到这个结果,是不是感觉使用C1WPF控件构建OLAP服务很简单很方便。其实这个只是最基本的控件,还可以制作自定义界面的,让页面布局更方便自己的使用习惯。可以轻松实现下图效果:

图形浏览:

C1WPF制作OLAP Cube浏览工具的更多相关文章

  1. 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具

    查看本章节 查看作业目录 需求说明: 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具 实现思路: 使用history对象中的 forward() 方法和 ...

  2. 用Canvas制作简单的画图工具

    今天用Canvas制作了一个画图工具,非常简单,功能也不是很多,主要有背景网格,画线,画圆,画矩形和画圆角矩形,也用到了canvas的一些基本知识,在这里一一列举. 1.线段的绘制: 如何绘制真正的1 ...

  3. gif动图快速制作方法(附工具)

    现在写博客或是wiki的过程中,会经常引用到图片,特别是客户端经常与页面相关所以截图不可避.但是越来越多的效果仅仅一张图片是无法清楚的描述.并且博客或是wiki也是支持gif图的.gif图的制作方法有 ...

  4. CSS Animatie是一款在线制作CSS3动画的工具,可以在线直接制作CSS3动画效果,生成代码

    CSS Animatie是一款在线制作CSS3动画的工具,可以在线直接制作CSS3动画效果,生成代码 CSS Animatie 彩蛋爆料直击现场 CSS Animatie是一款在线制作CSS3动画的工 ...

  5. Xcode之外的文档浏览工具--Dash (在iOS代码库中浏览本帖)

    链接地址:http://www.cocoachina.com/bbs/read.php?tid=273479 Xcode之外的文档浏览工具--Dash    (在iOS代码库中浏览本帖)       ...

  6. 7个基于Linux命令行的文件下载和网站浏览工具

    7个基于Linux命令行的文件下载和网站浏览工具 时间:2015-06-01 09:36来源:linux.cn 编辑:linux.cn 点击: 2282 次 Linux命令行是GNU/Linux中最神 ...

  7. gif动图快速制作方法(附工具)(转)

    现在写博客或是wiki的过程中,会经常引用到图片,特别是客户端经常与页面相关所以截图不可避.但是越来越多的效果仅仅一张图片是无法清楚的描述.并且博客或是wiki也是支持gif图的.gif图的制作方法有 ...

  8. Ubuntu下几个命令行方式使用的图片浏览工具

    想找几个Ubuntu下可以以命令行方式使用的图片浏览工具. Google了一些资料,找到下面几个web: 1.pho:轻巧的命令行图片查看器 其中介绍了工具pho,其功能特点,见下面的转帖内容: ph ...

  9. c语言的重构、清理与代码分析图形化浏览工具: CScout

    网址: https://www.spinellis.gr/cscout/ https://www2.dmst.aueb.gr/dds/cscout/index.html https://github. ...

随机推荐

  1. Android 读取Assets下的资源文件

    做Android开发近半年了,东西越学越多,硬盘容量越来越小.很多东西找起来也不方便,为此,我打算从今天起把工作中学到的东西整理起来,写成日记.也希望与广大网友分享我的经验.一同进步.今天主要介绍文件 ...

  2. 【转载】注释AFX_MSG_MAP,AFX_DATA,AFX_DATA_MAP , Afx_MSG等宏不能删除

    原文: BEGIN_MESSAGE_MAP(CMy1Dlg, CDialog) //{{AFX_MSG_MAP(CMy1Dlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON ...

  3. 13-[函数进阶]-列表生成式,生成器&迭代器

    1.列表生成式 Python一种独特的语法,相当于语法糖的存在,可以帮你在某些场合写出比较精简酷炫的代码.但没有它,也不会有太多的影响. 语法糖(Syntactic sugar),也译为糖衣语法,是由 ...

  4. 02-分页器,自定义分页器,解耦函数分页器,分页器class

    1 .批量数据导入 主url from django.contrib import admin from django.urls import path, re_path, include urlpa ...

  5. 4320: ShangHai2006 Homework

    4320: ShangHai2006 Homework 链接 分析: 分块.对权值模数进行分块,模数小于$\sqrt V$的($V$为权值上界),暴力处理. 模数大于$\sqrt V$的,设模数是k, ...

  6. jzoj5341 捕老鼠

    Description 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里的仓库灭灭鼠.于是,猫被农夫约派去捕老鼠. 猫虽然擅长捕老鼠,但是老鼠们太健美了,身手敏捷,于是猫想 ...

  7. Introduction to Big Data with PySpark

    起因 大数据时代 大数据最近太热了,其主要有数据量大(Volume),数据类别复杂(Variety),数据处理速度快(Velocity)和数据真实性高(Veracity)4个特点,合起来被称为4V. ...

  8. node.js学习笔记——前序

    一.什么是node.js 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一 ...

  9. STM平台增加性能测试/稳定性测试部分【一】

    前置 我之前写了一个接口自动化平台的,后期因为一个原因删除了. 现在,在此平台的基础上,我又增加了性能/稳定性的功能 它的前端大概是这样: 数据解析: 图表展示: 我将稳定性及性能归与一套方案去编写, ...

  10. Error! Failed to install react, react-dom, next, try again.

    问题:用create-next-app创建应用报错,部分模块没有安装,react.react-dom.next等模块安装失败,如下图所示 操作环境: 系统:Ubuntu 16.04.4 LTS npm ...