zoukankan      html  css  js  c++  java
  • 关于SilverLight打印(二)

    关于SL打印(二)

    在本页面中有DataGrid数据绑定,可以根据数据加载实现分页打印

    代码
    List<EmployeeModel>() employees = new List<EmployeeModel>();

     
    //调用打印

    GetPrintPage(dataPager1.PageCount, dataPager1.PageSize)
    //当前数据分页中dataPager1
    //当前数据页行数PageSize

    //employees 当前填充DataGrid的集合
    //PageCount总页码
    //Pagesize 每一页页数
    public void GetPrintPage(int PageCount, int Pagesize)
            {
                PrintDocument pd 
    = new PrintDocument();
                
    int itemindex = 0;//从第一张打印
                int count = Pagesize;

                
    //根据页码选择的数据
                pd.PrintPage += (s, pe) =>
                {
                    StackPanel stack 
    = new StackPanel();
                    
    while (itemindex < PageCount)
                    {
                        
    if (itemindex == PageCount- 1)
                        {
                            count 
    = employees.Count - (Pagesize * itemindex);
                        }
                        List
    <EmployeeModel> itemsource = LoadNewList(employees, itemindex * Pagesize, count);

                        PageP mode 
    = new PageP();//当前要打印的页面(包含数据DataGrid)
                        int PrintPageindex = itemindex + 1;
                        mode.MinHeight 
    = 1058;//根据A4纸显示高度
                        mode.dataGrid1.ItemsSource = itemsource;
                        stack.Children.Add(mode);

                        stack.Measure(
    new Size(pe.PrintableArea.Width, double.PositiveInfinity));

                        
    if (stack.DesiredSize.Height > pe.PrintableArea.Height | stack.Children.Count > 1)
                        {
                            stack.Children.Remove(mode);
                            stack.Measure(pe.PrintableArea);
                            pe.HasMorePages 
    = true;
                            
    break;
                        }
                        itemindex 
    += 1;
                    }
                    
                    pe.PageVisual 
    = stack;
                };
                pd.Print(
    null);
            }


    // 获取指定的List集合
      public static List<T> LoadNewList<T>(List<T> _source, int PIndex, int Pcounts)
            {
                List
    <T> newList = new List<T>();

                newList.AddRange(_source.GetRange(PIndex, Pcounts));
                
    return newList;
            }



     附:一般打印都是A4纸;A4纸的标准是宽21cm;高29.7cm.像素为:宽588px;高:862Px;

      一般除开边距margin(70,80,70,80) 余下部分就是可以是datagrid的高度,Pagesize=余下高度/(行高)。

     简单数据分页打印

     如有不足地方,请指出

  • 相关阅读:
    Atomikos 中文说明文档(周枫翻译) 东师理想
    flex手机项目嵌套html页面和html页面播放声音文件 东师理想
    sql server 创建 ASPState 数据库方法 东师理想
    Android中文API(博客翻译版转载) 东师理想
    sql server导入excel和多表关联更新 东师理想
    关于CSS样式zindex在firefox和平板电脑中的问题 东师理想
    使用Flash builder 4.6创建Flex手机项目读取XML文件方法 东师理想
    android动画切换(滑屏效果)实例 东师理想
    一个障碍,就是一个超越自我的契机(转载)
    多去阅读思维训练类的书籍(转载)
  • 原文地址:https://www.cnblogs.com/sfwl_1026/p/1896520.html
Copyright © 2011-2022 走看看