因为数据量很大所以自己做了一个通用的分页存储过程,
可以得到相应的参数,
但是显示这一块做的不是很好
我做的方法是:用两给BUTTON 点击frobut 和 Nextbut
来获取前一页和下一页.
其中一个事件如下:
protected void butfor_Click(object sender, EventArgs e)
{
if (pageindex > 1)
{
pageindex = pageindex - 1;
UsageManagement um = new UsageManagement();
_grid.DataSource = um.FindCustomerCdr(customerId, servicetypeid, startdate, enddate, pageindex,0,pagesize).Tables[0];
_grid.DataBind();
this.textPage.Text = pageindex + "/" + totalindex;
}
}
这样显示不是好看.
而且两个BUTTON在页面中布局不很麻烦
怎样才能好好的显示呀本人以前没做过做b/s系统
谢谢
可以得到相应的参数,
但是显示这一块做的不是很好
我做的方法是:用两给BUTTON 点击frobut 和 Nextbut
来获取前一页和下一页.
其中一个事件如下:
protected void butfor_Click(object sender, EventArgs e)
{
if (pageindex > 1)
{
pageindex = pageindex - 1;
UsageManagement um = new UsageManagement();
_grid.DataSource = um.FindCustomerCdr(customerId, servicetypeid, startdate, enddate, pageindex,0,pagesize).Tables[0];
_grid.DataBind();
this.textPage.Text = pageindex + "/" + totalindex;
}
}
这样显示不是好看.
而且两个BUTTON在页面中布局不很麻烦
怎样才能好好的显示呀本人以前没做过做b/s系统
谢谢
解决方案 »
- 可以这么写么?
- 网络应用程序是什么概念?赢球啦散40分顶者有分O(∩_∩)O~
- select * from A,B,从这两个表中选择的记录集DataSet,如何访问和使用记录集DataSet中的记录和字段?
- c# 新手问: 开发 专家系统 用那种数据库比较好?开发考试练习系统用那种数据库较好?
- 求一个算法解决方案
- iis管理中的网站和虚拟目录各代表什么意思啊!它们起什么作用呢?
- 在线等,马上结贴:(web) 当用鼠标 Click datagrid(web) 的某一行 怎么样触发一个事件,并获得该行的Index? 3Q !!!
- C#是不是不能开发EXCEL的程序啊,大家看,问题太多了??
- 怎么对DataTable对象的记录重新排序
- GetPrivateProfileStringA 函数在 C# 中如何声名
- 请教access数据库权限设置问题
- 关于输出EXcel的问题
{
using System;
using System.ComponentModel;
using System.Collections;
using System.Collections.Generic;
using System.Security.Permissions; using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; [
DefaultEvent( "PagingChanged" ),
DefaultProperty( "" ),
ToolboxData( "<{0}:PagingNavigator runat=\"server\"> </{0}:PagingNavigator>" )
]
public class PagingNavigator : CompositeControl
{
#region ***** Constants and Enumurations *****************************
public enum ItemsCountOfPage
{
/// <summary>5行</summary>
Line5 = 5,
/// <summary>10行</summary>
Line10 = 10,
/// <summary>20行</summary>
Line20 = 20,
/// <summary>50行</summary>
Line50 = 50,
/// <summary>100行</summary>
Line100 = 100,
/// <summary>全て</summary>
LineAll = 0
} private const int DEFAULT_TOTAL_ITEMES = 0;
private const int DEFAULT_CURENT_PAGE = 1;
private const ItemsCountOfPage DEFAULT_ITEMS_PER_PAGE =
ItemsCountOfPage.Line20;
private const int MINIMUM_ITEMS_PER_PAGE = 5;
private const int DISPLAY_PAGE_LINK_COUNT = 5;
private const int TOP_PAGE_NO = 1;
private const int NUMBER_OF_OBJECTS = 3;
private const int COLUMN_TOTAL_ITEMS = 0;
private const int COLUMN_ITEMS_PER_PAGE = 1;
private const int COLUMN_CURRENT_PAGE = 2; // 画像ファイル名
private const string IMAGE_FILE_TOP_PAGE =
"~/images/pagebtn_first.gif";
private const string IMAGE_FILE_MINUS5_PAGE =
"~/images/pagebtn_minus5.gif";
private const string IMAGE_FILE_PLUS5_PAGE =
"~/images/pagebtn_plus5.gif";
private const string IMAGE_FILE_LAST_PAGE =
"~/images/pagebtn_last.gif"; // CSS
private const string CSS_PAGING = "List_toolbar";
private const string CSS_PAGENAVI = "PagingNavigation";
private const string CSS_ONEGROUP = "OneGroup";
private const string CSS_NUM_OF_ITEM = "numberOfItems";
private const string CSS_NUM_OF_PAGE = "numberOfPageView";
private const string CSS_TURN_OVER = "pageTurnOver";
private const string CSS_CURRENT_PAGE = "Now"; #endregion
#region ***** Constructors *******************************************
#endregion
#region ***** Public Member Functions ********************************
[
Category( "Action" ),
Description( "Action" )
]
public event EventHandler PagingChanged
{
add
{
Events.AddHandler( m_eventPagingChangedKey, value );
}
remove
{
Events.RemoveHandler( m_eventPagingChangedKey, value );
}
}
#endregion
#region ***** Protected Member Functions *****************************
protected override void CreateChildControls( )
{
Controls.Clear();
initialize();
makeItemCountDropDown(); m_topLinkButton = new LinkButton();
m_topLinkButton.ID = "TopPageButton";
m_topLinkButton.CommandArgument = TOP_PAGE_NO.ToString();
m_topLinkButton.Command += new CommandEventHandler( selectedPageChanged );
m_topImage = new Image();
m_topImage.AlternateText =
m_l10nAssist.GetL10nString( PluginUiControl.RES_BTN_TOFIRSTPAGE );
m_topImage.ImageUrl = ResolveUrl( IMAGE_FILE_TOP_PAGE );
m_topLinkButton.Controls.Add( m_topImage ); int minus5PageNo = ( ( m_startPageNumber - 1 ) < TOP_PAGE_NO )
? TOP_PAGE_NO : m_startPageNumber - 1;
m_minus5LinkButton = new LinkButton();
m_minus5LinkButton.ID = "Minus5PageButton";
m_minus5LinkButton.CommandArgument = minus5PageNo.ToString();
m_minus5LinkButton.Command += new CommandEventHandler( selectedPageChanged );
m_minus5Image = new Image();
m_minus5Image.AlternateText =
m_l10nAssist.GetL10nString( PluginUiControl.RES_BTN_MINUS5PAGE );
m_minus5Image.ImageUrl = ResolveUrl( IMAGE_FILE_MINUS5_PAGE );
m_minus5LinkButton.Controls.Add( m_minus5Image ); m_currentPageButton = new Label();
m_pageButtonList = new List<LinkButton>( DISPLAY_PAGE_LINK_COUNT - 1 );
for ( int indx = 0; indx < DISPLAY_PAGE_LINK_COUNT - 1; indx++ )
{
LinkButton pageButton = new LinkButton();
pageButton.Command += new CommandEventHandler( selectedPageChanged );
m_pageButtonList.Add( pageButton );
}
int plus5PageNo = ( m_totalPages < ( m_endPageNumber + 1 ) )
? m_totalPages : m_endPageNumber + 1;
m_plus5LinkButton = new LinkButton();
m_plus5LinkButton.ID = "Plus5PageButton";
m_plus5LinkButton.CommandArgument = plus5PageNo.ToString();
m_plus5LinkButton.Command += new CommandEventHandler( selectedPageChanged );
m_plus5Image = new Image();
m_plus5Image.AlternateText =
m_l10nAssist.GetL10nString( PluginUiControl.RES_BTN_PLUS5PAGE );
m_plus5Image.ImageUrl = ResolveUrl( IMAGE_FILE_PLUS5_PAGE );
m_plus5LinkButton.Controls.Add( m_plus5Image ); m_lastLinkButton = new LinkButton();
m_lastLinkButton.ID = "LastPageButton";
m_lastLinkButton.CommandArgument = m_totalPages.ToString();
m_lastLinkButton.Command += new CommandEventHandler( selectedPageChanged );
m_lastImage = new Image();
m_lastImage.AlternateText =
m_l10nAssist.GetL10nString( PluginUiControl.RES_BTN_TOLASTPAGE );
m_lastImage.ImageUrl = ResolveUrl( IMAGE_FILE_LAST_PAGE );
m_lastLinkButton.Controls.Add( m_lastImage );
this.Controls.Add( m_itemCountDdl );
this.Controls.Add( m_topLinkButton );
this.Controls.Add( m_minus5LinkButton );
this.Controls.Add( m_currentPageButton );
foreach ( LinkButton pageButton in m_pageButtonList )
{
this.Controls.Add( pageButton );
}
this.Controls.Add( m_plus5LinkButton );
this.Controls.Add( m_lastLinkButton );
}
protected override void OnPreRender( EventArgs i_e )
{
m_itemCountDdl.SelectedValue = ( ( int ) ItemsPerPage ).ToString(); int pageButtonIndx = 0;
for ( int indx = 0; indx < DISPLAY_PAGE_LINK_COUNT; indx++ )
{
if ( CurrentPage != ( m_startPageNumber + indx ) )
{
LinkButton pageButton = m_pageButtonList[ pageButtonIndx++ ];
pageButton.CommandArgument = ( m_startPageNumber + indx ).ToString();
}
}
} #endregion自己研究一下吧
{
if ( m_renderToolbarDiv )
{
writer.AddAttribute( HtmlTextWriterAttribute.Class, CSS_PAGING, true );
writer.RenderBeginTag( HtmlTextWriterTag.Div );
}
writer.AddAttribute( HtmlTextWriterAttribute.Class, CSS_PAGENAVI, true );
writer.RenderBeginTag( HtmlTextWriterTag.Div ); writer.AddAttribute( HtmlTextWriterAttribute.Id, CSS_NUM_OF_ITEM, true );
writer.AddAttribute( HtmlTextWriterAttribute.Class, CSS_ONEGROUP, true );
writer.AddAttribute( HtmlTextWriterAttribute.Title,
m_l10nAssist.GetL10nString( PluginUiControl.RES_LBL_NUMBEROFITEMS ), true );
writer.RenderBeginTag( HtmlTextWriterTag.Span );
writer.Write( displayItemNoPerTotal() );
writer.RenderEndTag();
writer.AddAttribute( HtmlTextWriterAttribute.Id, CSS_NUM_OF_PAGE, true );
writer.AddAttribute( HtmlTextWriterAttribute.Class, CSS_ONEGROUP, true );
writer.AddAttribute( HtmlTextWriterAttribute.Title,
m_l10nAssist.GetL10nString( PluginUiControl.RES_LBL_ITEMSPERPAGE ), true );
writer.RenderBeginTag( HtmlTextWriterTag.Span );
m_itemCountDdl.RenderControl( writer ); writer.Write( m_l10nAssist.GetL10nString( PluginUiControl.RES_LBL_PERPAGE ) );
writer.RenderEndTag(); if ( isPageButtonsDisplayed() )
{
// <span id="pageTurnOver">
writer.AddAttribute( HtmlTextWriterAttribute.Id, CSS_TURN_OVER, true );
writer.AddAttribute( HtmlTextWriterAttribute.Class, CSS_ONEGROUP, true );
writer.RenderBeginTag( HtmlTextWriterTag.Span );
if ( !isCurrentPageTopPage() )
{
m_topLinkButton.RenderControl( writer );
} if ( isReverseButtonDisplayed() )
{
m_minus5LinkButton.RenderControl( writer );
}
setPagingButton( writer );
if ( isNextButtonDisplayed() )
{
m_plus5LinkButton.RenderControl( writer );
}
if ( !isCurrentPageLastPage() )
{
m_lastLinkButton.RenderControl( writer );
}
writer.RenderEndTag();
}
writer.RenderEndTag();
if ( m_renderToolbarDiv )
{
writer.RenderEndTag();
}
}
protected override void OnInit( EventArgs e )
{
ResourceManagerAdapter resourceManagerAdapter =
new ResourceManagerAdapter( PluginUiControl.RESOURCE_NAME, PluginUiControl.ASSEMBLY_NAME );
m_l10nAssist = new L10nAssist();
m_l10nAssist.AddResourceManager( resourceManagerAdapter );
Page.RegisterRequiresControlState( this );
base.OnInit( e );
}
protected override object SaveControlState( )
{
object[] saveStates = new object[ NUMBER_OF_OBJECTS ];
saveStates[ COLUMN_TOTAL_ITEMS ] = TotalItems;
saveStates[ COLUMN_ITEMS_PER_PAGE ] = ItemsPerPage;
saveStates[ COLUMN_CURRENT_PAGE ] = CurrentPage;
object obj = base.SaveControlState();
if ( null != obj )
{
return new Pair( obj, saveStates );
}
return ( object ) saveStates;
}
protected override void LoadControlState( object i_savedState )
{
object saveState = i_savedState;
if ( null != i_savedState )
{
Pair p = saveState as Pair;
if ( null != p )
{
base.LoadControlState( p.First );
saveState = p.Second;
}
object[] saveStates = ( object[] ) saveState;
if ( ( null != saveStates ) &&
( NUMBER_OF_OBJECTS == saveStates.Length ) )
{
TotalItems = ( int ) saveStates[ COLUMN_TOTAL_ITEMS ];
ItemsPerPage = ( ItemsCountOfPage ) saveStates[ COLUMN_ITEMS_PER_PAGE ]; CurrentPage = ( int ) saveStates[ COLUMN_CURRENT_PAGE ];
}
}
}
public int TotalItems
{
get
{
return m_totalItems;
}
set
{
if ( DEFAULT_TOTAL_ITEMES <= value )
{
m_totalItems = value;
}
else
{
m_totalItems = DEFAULT_TOTAL_ITEMES;
}
initialize();
}
}
public ItemsCountOfPage ItemsPerPage
{
get
{
return m_itemsPerPage;
}
set
{
int startItemNo = StartItemNumber;
if ( ( ItemsCountOfPage.Line5 == value )
|| ( ItemsCountOfPage.Line10 == value )
|| ( ItemsCountOfPage.Line20 == value )
|| ( ItemsCountOfPage.Line50 == value )
|| ( ItemsCountOfPage.Line100 == value )
|| ( ItemsCountOfPage.LineAll == value ) )
{
m_itemsPerPage = value;
}
else
{
m_itemsPerPage = DEFAULT_ITEMS_PER_PAGE;
}
if ( ItemsPerPage == ItemsCountOfPage.LineAll )
{
CurrentPage = DEFAULT_CURENT_PAGE;
}
else
{
CurrentPage = startItemNo / ( int ) m_itemsPerPage + 1;
}
initializeAndEventThrow();
}
}
public int CurrentPage
{
get
{
return m_currentPage;
}
set
{
setCurrentPageNo( value );
initialize();
}
}
public int StartItemNumber
{
get
{
if ( 0 == TotalItems )
{
return 0;
}
return (int)ItemsPerPage * ( CurrentPage - 1 ) + 1;
}
}
public int EndItemNumber
{
get
{
int endItemNo = TotalItems;
if ( ItemsPerPage != ItemsCountOfPage.LineAll )
{
int no = (int)ItemsPerPage * CurrentPage;
if ( no < TotalItems ){
endItemNo = no;
}
}
return endItemNo;
}
}
public bool RenderToolbarDiv
{
set
{
m_renderToolbarDiv = value;
}
}
#endregion
#region ***** Virtual Member Functions *******************************
protected virtual void OnPagingChanged( EventArgs e )
{
// イベントハンドラが設定されていればイベントを投げる。
EventHandler pagingChangeHandler =
( EventHandler ) Events[ m_eventPagingChangedKey ];
if ( pagingChangeHandler != null )
{
pagingChangeHandler( this, e );
}
}
private void setCurrentPageNo( int i_pageno )
{
if ( DEFAULT_CURENT_PAGE <= i_pageno )
{
m_currentPage = i_pageno;
}
else
{
if ( 0 == m_totalPages )
{
m_currentPage = 0;
}
else
{
m_currentPage = DEFAULT_CURENT_PAGE;
}
}
}
{
m_totalPages = 1;
if ( 0 < TotalItems )
{
if ( ItemsPerPage != ItemsCountOfPage.LineAll )
{
m_totalPages = TotalItems / ( int ) ItemsPerPage;
if ( 0 < ( TotalItems % ( int ) ItemsPerPage ) )
{
m_totalPages++;
}
}
if ( m_totalPages < CurrentPage )
{
setCurrentPageNo( m_totalPages );
}
int indx = CurrentPage / DISPLAY_PAGE_LINK_COUNT;
m_startPageNumber = indx * DISPLAY_PAGE_LINK_COUNT;
if ( 0 < ( CurrentPage % DISPLAY_PAGE_LINK_COUNT ) )
{
m_startPageNumber++;
}
else
{
m_startPageNumber -= DISPLAY_PAGE_LINK_COUNT - 1;
}
m_endPageNumber = m_startPageNumber + DISPLAY_PAGE_LINK_COUNT - 1;
}
else
{
setCurrentPageNo( 0 );
m_startPageNumber = 0;
m_endPageNumber = 0;
}
}
private void selectedPageChanged( object i_sender, CommandEventArgs i_eventArgs )
{
int newPage = -1;
if ( true == Int32.TryParse( ( string ) i_eventArgs.CommandArgument, out newPage ) )
{
changeCurrentPageNumber( newPage );
}
}
private void numberOfItemsChanged( object i_sender, EventArgs i_eventArgs )
{
int newItemsPerPage = -1;
if ( true == Int32.TryParse( (( DropDownList ) i_sender).SelectedValue,
out newItemsPerPage ) )
{
changeItemsPerPage( newItemsPerPage );
}
}
private string displayItemNoPerTotal( )
{
return string.Format( "{0}-{1}/{2}",
StartItemNumber, EndItemNumber, TotalItems );
}
private void makeItemCountDropDown( )
{
m_itemCountDdl = new DropDownList();
m_itemCountDdl.Items.Add(
new ListItem( m_l10nAssist.GetL10nString( PluginUiControl.RES_ITM_LINE5 ),
( ( int ) ItemsCountOfPage.Line5 ).ToString() ) );
m_itemCountDdl.Items.Add(
new ListItem( m_l10nAssist.GetL10nString( PluginUiControl.RES_ITM_LINE10 ),
( ( int ) ItemsCountOfPage.Line10 ).ToString() ) );
m_itemCountDdl.Items.Add(
new ListItem( m_l10nAssist.GetL10nString( PluginUiControl.RES_ITM_LINE20 ),
( ( int ) ItemsCountOfPage.Line20 ).ToString() ) );
m_itemCountDdl.Items.Add(
new ListItem( m_l10nAssist.GetL10nString( PluginUiControl.RES_ITM_LINE50 ),
( ( int ) ItemsCountOfPage.Line50 ).ToString() ) );
m_itemCountDdl.Items.Add(
new ListItem( m_l10nAssist.GetL10nString( PluginUiControl.RES_ITM_LINE100 ), ( ( int ) ItemsCountOfPage.Line100 ).ToString() ) );
m_itemCountDdl.Items.Add(
new ListItem( m_l10nAssist.GetL10nString( PluginUiControl.RES_ITM_LINEALL ), ( ( int ) ItemsCountOfPage.LineAll ).ToString() ) );
m_itemCountDdl.AutoPostBack = true;
m_itemCountDdl.SelectedIndexChanged += new EventHandler( numberOfItemsChanged ); m_itemCountDdl.SelectedValue = ( ( int ) ItemsPerPage ).ToString();
}
private void initializeAndEventThrow( )
{
initialize();
OnPagingChanged( EventArgs.Empty );
}
private void changeCurrentPageNumber( int i_newPageNumber )
{
CurrentPage = i_newPageNumber;
initializeAndEventThrow();
}
private void changeItemsPerPage( int i_newItemsPerPage )
{
int startItemNo = StartItemNumber;
ItemsPerPage = (ItemsCountOfPage)i_newItemsPerPage;
}
private void setPagingButton( HtmlTextWriter i_writer )
{
int buttonIndx = 0;
for ( int indx = 0; indx < DISPLAY_PAGE_LINK_COUNT; indx++ )
{
int pageNo = m_startPageNumber + indx;
if ( CurrentPage == pageNo )
{
Label pageButton = m_currentPageButton;
pageButton.Text = pageNo.ToString();
pageButton.ToolTip = m_l10nAssist.GetL10nString( PluginUiControl.RES_BTN_CURRENTPAGE );
pageButton.CssClass = CSS_CURRENT_PAGE;
pageButton.RenderControl( i_writer );
}
else
{
LinkButton pageButton = ( LinkButton ) m_pageButtonList[ buttonIndx++ ]; pageButton.CommandArgument = pageNo.ToString();
pageButton.Text = ( 1 == m_totalPages || pageNo > m_totalPages ) ?
"" : pageNo.ToString();
pageButton.ToolTip = pageNo.ToString() +
m_l10nAssist.GetL10nString( PluginUiControl.RES_BTN_TOPAGE );
if ( 1 != m_totalPages && pageNo <= m_totalPages )
{
pageButton.RenderControl( i_writer );
}
}
}
}
private bool isPageButtonsDisplayed( )
{
return ( 1 < m_totalPages );
}
private bool isReverseButtonDisplayed( )
{
return( TOP_PAGE_NO < m_startPageNumber );
}
private bool isNextButtonDisplayed( )
{
return( ( m_startPageNumber + DISPLAY_PAGE_LINK_COUNT - 1 ) < m_totalPages );
}
private bool isCurrentPageTopPage( )
{
return ( TOP_PAGE_NO == CurrentPage );
}
private bool isCurrentPageLastPage( )
{
return ( m_totalPages == CurrentPage );
} #endregion
#region ***** Private Data Members ***********************************
private int m_totalItems = DEFAULT_TOTAL_ITEMES;
private int m_currentPage = DEFAULT_CURENT_PAGE;
private int m_totalPages;
private int m_startPageNumber = 0;
private int m_endPageNumber;
private DropDownList m_itemCountDdl;
private LinkButton m_topLinkButton;
private Image m_topImage;
private LinkButton m_minus5LinkButton;
private Image m_minus5Image;
private Label m_currentPageButton;
private List<LinkButton> m_pageButtonList;
private LinkButton m_plus5LinkButton;
private Image m_plus5Image;
protected LinkButton m_lastLinkButton;
private Image m_lastImage;
private bool m_renderToolbarDiv = true;
private L10nAssist m_l10nAssist;
private static readonly object m_eventPagingChangedKey = new object();
#endregion
}
}