文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>关于SilverLight打印(二)

关于SilverLight打印(二)

时间:2010-12-06  来源:小妹

在本页面中有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=余下高度/(行高)。

 

 简单数据分页打印

 如有不足地方,请指出

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载