WPF 分页控件
来源:互联网 发布:国网广电网络整合2017 编辑:程序博客网 时间:2024/05/21 21:35
控件 页面
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Style="{StaticResource stcPager}"> <Button Name="FirstButton" Content="首页" Click="Button_Click" Style="{StaticResource btnPager}"/> <Button Name="PreButton" Content="上一页" Click="Button_Click" Style="{StaticResource btnPager}"/> <ItemsControl Name="icPage"> <ItemsControl.ItemTemplate> <DataTemplate> <Button Content="{Binding text}" Click="Button_Click" Style="{Binding style}"/> </DataTemplate> </ItemsControl.ItemTemplate> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <WrapPanel/> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl> <Button Name="NextButton" Content="下一页" Click="Button_Click" Style="{StaticResource btnPager}"/> <Button Name="LastButton" Content="尾页" Click="Button_Click" Style="{StaticResource btnPager}"/> <TextBlock Text="转到 " Style="{StaticResource txtPager}"/> <ComboBox Name="cbGoto" IsEditable="True"/> <TextBlock Text=" 共" Style="{StaticResource txtPager}"/> <TextBlock Name="tbPageCount" Style="{StaticResource txtPager}"/> <TextBlock Text="页" Style="{StaticResource txtPager}"/> <TextBlock Text=" / " Style="{StaticResource txtPager}"/> <TextBlock Text="共" Style="{StaticResource txtPager}"/> <TextBlock Name="tbRecordCount" Style="{StaticResource txtPager}"/> <TextBlock Text="条 " Style="{StaticResource txtPager}"/> <DockPanel Visibility="Collapsed"> <TextBlock Text="当前第" Style="{StaticResource txtPager}"/> <TextBlock Name="tbPageIndex" Style="{StaticResource txtPager}"/> <TextBlock Text="页" Style="{StaticResource txtPager}"/> </DockPanel> </StackPanel>
控件页 后台
public delegate void PageIndexChangingEventHandler(int pageIndex, EventArgs e); /// <summary> /// Interaction logic for BtnPager.xaml /// </summary> public partial class BtnPage: UserControl { public BtnPage() { InitializeComponent(); } private int pageIndex = 1; public int PageIndex { get { return pageIndex; } set { pageIndex = value; } } private int pageSize = 10; /// <summary> /// 页面记录数 应与DataGrid的PageSize保持一致 /// </summary> public int PageSize { get { return pageSize; } set { //if (value > 0) //{ pageSize = value; Load(); //} } } private int recordcount = 0; /// <summary> /// 记录总数 /// </summary> public int RecordCount { get { return recordcount; } set { //if (value > 0) //{ recordcount = value; Load(); //} } } private int pageCount; private int maxPageBtnNum = 8; /// <summary> /// 要显示的页数 /// </summary> public int MaxPageBtnNum { get { return maxPageBtnNum; } set { if (value != 0) maxPageBtnNum = value; } } /// <summary> /// /// </summary> public event PageIndexChangingEventHandler PageIndexChangingEvent; ///// <summary> ///// button Content对应的值 ///// </summary> private void Button_Click(object sender, RoutedEventArgs e) { Button bt = sender as Button; switch (bt.Name) { case "FirstButton": pageIndex = 1; break; case "LastButton": pageIndex = pageCount; break; case "PreButton": if (pageIndex > 1) pageIndex--; break; case "NextButton": if (pageIndex < pageCount) pageIndex++; break; default: pageIndex = int.Parse(bt.Content.ToString()); break; } PageChangeSet(e); } /// <summary> /// 设置button的Content /// </summary> private void BindList() { if (pageIndex > 1) { FirstButton.IsEnabled = true; PreButton.IsEnabled = true; } else { FirstButton.IsEnabled = false; PreButton.IsEnabled = false; } if (pageIndex < pageCount) { LastButton.IsEnabled = true; NextButton.IsEnabled = true; } else { LastButton.IsEnabled = false; NextButton.IsEnabled = false; } int halfNum = maxPageBtnNum % 2 == 0 ? maxPageBtnNum / 2 : (maxPageBtnNum / 2 + 1); int fromIndex, toIndex; if (pageIndex <= halfNum) fromIndex = 1; else fromIndex = pageIndex - halfNum; if (pageCount - pageIndex <= halfNum) toIndex = pageCount; else toIndex = pageIndex + halfNum; ArrayList btnIndexList = new ArrayList(); for (int i = fromIndex; i <= toIndex; i++) { if (i == pageIndex) btnIndexList.Add(new { text = i, style = this.FindResource("btnPager_Act") as Style }); else btnIndexList.Add(new { text = i, style = this.FindResource("btnPager") as Style }); } icPage.ItemsSource = btnIndexList; icPage.Items.Refresh(); List<int> cbbIndexList = new List<int>(); for (int i = 1; i <= pageCount; i++) { cbbIndexList.Add(i); } cbGoto.SelectionChanged -= new SelectionChangedEventHandler(cbGoto_SelectionChanged); cbGoto.ItemsSource = cbbIndexList; cbGoto.Items.Refresh(); cbGoto.Text = pageIndex.ToString(); cbGoto.SelectionChanged += new SelectionChangedEventHandler(cbGoto_SelectionChanged); tbPageCount.Text = pageCount.ToString(); tbRecordCount.Text = RecordCount.ToString(); tbPageIndex.Text = pageIndex.ToString(); } /// <summary> /// 翻页前的设置 /// </summary> /// <param name="e"></param> private void PageChangeSet(EventArgs e) { BindList(); PageIndexChangingEvent(PageIndex, e); } /// <summary> /// 加载,当数据条数变化时,重新加载 /// </summary> private void Load() { pageCount = (recordcount % pageSize == 0) ? recordcount / pageSize : (recordcount / pageSize + 1); BindList(); } /// <summary> /// 页面下拉框 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cbGoto_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { pageIndex = int.Parse(cbGoto.SelectedValue.ToString()); PageChangeSet(e); } catch (Exception) { } } }使用页 后台
service.GetPageList(PageIndex, PageSize, OrderBy, strsql, ref count);
dgplist.PageIndex = pageIndex;dgplist.PageSize = pageSize;dgplist.RecordCount = count;
分页方法
/// <summary> /// 分页 /// </summary> /// <param name="PageIndex">页索引</param> /// <param name="PageSize">页大小</param> /// <param name="Table">表名</param> /// <param name="Field">返回的字段为*表示所有的字段</param> /// <param name="OrderBy">排序规则</param> /// <param name="PK">主键列,如果表没有主键,随便写一个列即可</param> /// <param name="Filter">过滤条件</param> /// <param name="MaxPage"> 执行结果 -1 error, 0 false, 大于1表示一共有几页</param> /// <param name="TotalRow">记录总数</param> /// <param name="Descript">对分页的描述</param> /// <returns></returns> public static DataSet GetPageList(int PageIndex, int PageSize, string Table, string Field, string OrderBy, string PK, string Filter, ref int MaxPage, ref int TotalRow, ref string Descript)//out是在外面不能赋值的 { if (Filter == null) { Filter = ""; } SqlParameter[] pars = new SqlParameter[] { new SqlParameter("@PageIndex", PageIndex), new SqlParameter("@PageSize", PageSize), new SqlParameter("@Table", Table), new SqlParameter("@Field", Field), new SqlParameter("@OrderBy", OrderBy), new SqlParameter("@PK", PK), new SqlParameter("@Filter", Filter), new SqlParameter("@MaxPage", MaxPage), new SqlParameter("@TotalRow", TotalRow), new SqlParameter("@Descript", Descript) }; pars[7].Direction = ParameterDirection.Output; pars[8].Direction = ParameterDirection.Output; pars[9].Direction = ParameterDirection.Output; DataSet ds = RunProcedure("RowNumberPagination", pars, "ds"); MaxPage = (int)pars[7].Value; TotalRow = (int)pars[8].Value; Descript = pars[9].Value.ToString(); return ds; }
- WPF 分页控件
- WPF分页控件
- wpf制作分页控件
- WPF自定义分页控件
- WPF 分页控件 存储过程
- wpf分页控件的实现
- 一个wpf的数据分页控件
- WPF一个简单的分页控件
- 一个简单WPF分页条控件
- WPF 自定义分页控件DataPager.xaml
- WPF分页控件 参照百度分页实现 带源码
- WPF控件
- wpf控件
- WPF控件
- WPF 控件
- WPF控件-StackPanel控件
- WPF分页DataGrid
- WPF DataGrid 分页自定义
- 如何设置网页中页眉页脚的打印效果
- Windows Mobile 手机上网设置经验
- define宏定义和const常量定义之间的区别
- EF视图查询时无主键带来的困绕
- 2011年9月 个人所得税 计算函数
- WPF 分页控件
- POJ 2409 波利亚原理
- ajax toolkit下载及添加方法
- 设计模式学习--适配器模式(Adatper pattern) C#
- matlab求解平面方程的原理
- 捣鼓HTML5之入门篇
- 值得思考的三个问题
- Objective-C 字符串的连接
- 异常错误(一)