注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

Silverlight开发之二打印  

2013-01-16 21:27:22|  分类: NET(C#) |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

Silverlight开发之二打印

几乎可以想见,所有的前台都要有报表,都要有打印,所以这里就弄了个打印,这个东西是借鉴一个国外的网站上的写的资料。这个是开源的,大家有机会可以去看看。

地址:http://silverlightreport.codeplex.com/releases

不得不说,国人的软件在易用性和健壮性了还是有很大的差距的,所以还是得向高手学习。

在这里主要是想说一点的是,程序的各个提供的打印的数据源是不一样的,所以考虑了一下,写了一个泛型函数,本来想写成一个泛型类的,但实在是没有想好,暂时先用这个泛型的函数顶替着,等有时间和心情再重新整理他。先说一下如何使用,将编译好的SilverlightReport的DLL引用到前台工程中,然后就可以使用了。

建立一个打印页面,看你想做成什么样子了,然后就是下面的代码:

    public partial class TestMain : Page

    {

        static Report report;

        public TestMain()

        {

            InitializeComponent();

 

            string name = "Test/myTest.xaml";

            string fullName = string.Format("/TestPrintApp;component/{0}", name);

 

           

            ////this.tabXaml.Header = name;

            ////this.txtXaml.Text = Report.ReadXaml(fullName);

 

            try

            {

                report = Report.LoadFromXaml(fullName);

            }

            catch (Exception ee)

            {

                string s = ee.Message;

            }

 

            cust.Set();//这里是为了测试,实际可在转向打印页面后直接调用下面这个Set函数

            //report.ItemsSource = new CustomerCollection();

        }

 

        public static  void Set<T>(List<T> d)

        {

            report.ItemsSource = d;

        }

        private void Print1(object sender, RoutedEventArgs e)

        {

            report.Print();

        }

        private void Preview1(object sender, RoutedEventArgs e)

        {

            report.Preview();

        }

    }

简单吧,但是,加载的myTest.xaml是一个数据资源字典,是一个手动写代码的报表打印的排版布局的资源。如下:

<sr:Report

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

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

    xmlns:sr="clr-namespace:SilverlightReport;assembly=SilverlightReport">

    <sr:Report.DataGrid>

        <sr:CDataGrid HeaderHorizontalAlignment="Center">

            <sr:CDataGridColumn Header="看CustomerId" Binding="{Binding CustomerId}" Width="1.2"></sr:CDataGridColumn>

            <sr:CDataGridColumn Header="CompanyName" Binding="{Binding CompanyName}" Width="3"></sr:CDataGridColumn>

            <sr:CDataGridColumn Header="ContactName" Binding="{Binding ContactName}" Width="2"></sr:CDataGridColumn>

            <sr:CDataGridColumn Header="ContactTitle" Binding="{Binding ContactTitle}" Width="2"></sr:CDataGridColumn>

            <sr:CDataGridColumn Header="Address" Binding="{Binding Address}" Width="2"></sr:CDataGridColumn>

        </sr:CDataGrid>

    </sr:Report.DataGrid>

 

    <sr:ReportBand Kind="ReportHeader">

        <TextBlock FontSize="20" FontWeight="Bold" Margin="10" HorizontalAlignment="Center">

                Silverlight Report Sample</TextBlock>

    </sr:ReportBand>

 

    <sr:ReportBand Kind="BottomMargin">

        <TextBlock HorizontalAlignment="Right">SilverlightReport v0.1 alpha</TextBlock>

    </sr:ReportBand>

</sr:Report>

这里面有页眉,页脚,表头,表尾等的组合,看上去很好,还可以进行行列的组合分解,就象HTML中的TABLE一样操作起来非常方便。

这个东西只是一个示例,正在完善。

快过年了。

  评论这张
 
阅读(597)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017