C1WPF制作OLAP Cube浏览工具
经过前期一段时间对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浏览工具的更多相关文章
- 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具
查看本章节 查看作业目录 需求说明: 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具 实现思路: 使用history对象中的 forward() 方法和 ...
- 用Canvas制作简单的画图工具
今天用Canvas制作了一个画图工具,非常简单,功能也不是很多,主要有背景网格,画线,画圆,画矩形和画圆角矩形,也用到了canvas的一些基本知识,在这里一一列举. 1.线段的绘制: 如何绘制真正的1 ...
- gif动图快速制作方法(附工具)
现在写博客或是wiki的过程中,会经常引用到图片,特别是客户端经常与页面相关所以截图不可避.但是越来越多的效果仅仅一张图片是无法清楚的描述.并且博客或是wiki也是支持gif图的.gif图的制作方法有 ...
- CSS Animatie是一款在线制作CSS3动画的工具,可以在线直接制作CSS3动画效果,生成代码
CSS Animatie是一款在线制作CSS3动画的工具,可以在线直接制作CSS3动画效果,生成代码 CSS Animatie 彩蛋爆料直击现场 CSS Animatie是一款在线制作CSS3动画的工 ...
- Xcode之外的文档浏览工具--Dash (在iOS代码库中浏览本帖)
链接地址:http://www.cocoachina.com/bbs/read.php?tid=273479 Xcode之外的文档浏览工具--Dash (在iOS代码库中浏览本帖) ...
- 7个基于Linux命令行的文件下载和网站浏览工具
7个基于Linux命令行的文件下载和网站浏览工具 时间:2015-06-01 09:36来源:linux.cn 编辑:linux.cn 点击: 2282 次 Linux命令行是GNU/Linux中最神 ...
- gif动图快速制作方法(附工具)(转)
现在写博客或是wiki的过程中,会经常引用到图片,特别是客户端经常与页面相关所以截图不可避.但是越来越多的效果仅仅一张图片是无法清楚的描述.并且博客或是wiki也是支持gif图的.gif图的制作方法有 ...
- Ubuntu下几个命令行方式使用的图片浏览工具
想找几个Ubuntu下可以以命令行方式使用的图片浏览工具. Google了一些资料,找到下面几个web: 1.pho:轻巧的命令行图片查看器 其中介绍了工具pho,其功能特点,见下面的转帖内容: ph ...
- c语言的重构、清理与代码分析图形化浏览工具: CScout
网址: https://www.spinellis.gr/cscout/ https://www2.dmst.aueb.gr/dds/cscout/index.html https://github. ...
随机推荐
- Dotnet Core Cli 解决方案中多个项目的相互引用和第三方库引用
dotnet add app/app.csproj reference lib/lib.csproj app项目引用lib项目 dotnet add package Newtonsoft.Json 当 ...
- 20155338《网络对抗技术》 Exp1 PC平台逆向破解
20155338<网络对抗技术> Exp1 PC平台逆向破解 实践目标 1.实践的对象是一个名为pwn1的linux可执行文件. 2.该程序正常执行流程是:main调用foo函数,foo函 ...
- iOS开发-通过正则表达式进行各种判断银行卡,车牌号,邮箱地址,QQ,身份证,全字母,仅输入字母或数字同时包含大小写字母和数字,仅能输入中文等
/* * 验证银行卡号是否正确 * 车牌号验证 * 检验邮箱地址是否正确 * 手机号中间四位密文显示 * 判断QQ号是否正确(5-11位) * 判断身份证号是否正确(如末位为字母请用“x” ...
- JS字符串补全方法padStart()和padEnd()
背景: var t = new Date().getMonth() + 1; // t ===> 7,没有0,怎么展示成下面的样子? // 2018-07-23 解决上述问题的一个思路: // ...
- js获取字符串字节数方法小结
js获取字符串字节数的方法.分享给大家供大家参考.具体如下: 大家都知道,获取字符串的长度可用length来获取,那么获取这段字符串的字节数呢? 英文字母肯定lenght和字节数都一样:都是1而中文l ...
- 公网API安全--OAuth认证
之前写过一个基于签名的公网API访问安全控制,另一种方式是基于OAuth认证协议做安全控制. 说明 用户访问A客户端,使用B的服务及资源.B只有征得用户的授权,才允许A客户端使用B上用户的资源和服务. ...
- APP测试基本流程以及APP测试要点
APP测试流程梳理 APP测试要点梳理 链接:http://pan.baidu.com/s/1gfaEZ1x 密码:07yt 1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开 ...
- oracle表空间的创建及dmp 文件的导入
--用oracle系统权限的账号 登陆 -- 1.创建用户 create user u_name identified by "u_password"; --2.赋予权限 gran ...
- Tetris(俄罗斯方块)
一天有个小朋友问我OpenGL俄罗斯方块怎么写. 俄罗斯方块分成两部分游戏逻辑和画面渲染. 1. 游戏逻辑 一个简单的俄罗斯方块的逻辑部分需要考虑的情况如下: 1. 方块的表示(坐标, 旋转, 上下左 ...
- linux 开机报错,error grub_efi_find_mmap_size not find
开机报错,差点以为要重装系统了 搜到了官方的重建引导的教程 修复了错误 https://wiki.manjaro.org/index.php/Restore_the_GRUB_Bootloader#F ...