首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Datalist控件分页有关问题

2011-12-28 
Datalist控件分页问题有一vs2003.net做的datalist分页页面,如100条记录,pagesize10时,显示共10页,但每页

Datalist控件分页问题
有一vs2003.net做的datalist分页页面,如100条记录,pagesize=10时,显示共10页,但每页只显示5条记录
pagesize=5时每页显示3条记录,只有在pagesize=1时才正确。
datalist设置:RepeatColumns= "1 "

--------------------------------------
相关源码:

#region   公共属性

public   int   ItemCount
{
get   {   return   Convert.ToInt32(ViewState[ "ITEMCOUNT "]);   }
set   {   ViewState[ "ITEMCOUNT "]   =   value;   }
}

public   int   PageCount
{
get   {   return   Convert.ToInt32(ViewState[ "PAGECOUNT "]);   }
set   {   ViewState[ "PAGECOUNT "]   =   value;   }
}

public   int   CurrentPage
{
get
{
if   (ViewState[ "PAGE "]   !=   null)
{
return   Convert.ToInt32(ViewState[ "PAGE "]);
}
else
{
return   1;
}
}
set   {   ViewState[ "PAGE "]   =   value;   }
}

#endregion

private   void   DataGridBind()
{
DataView   dv   =   GetDataSource();

dv.RowFilter   =   InitQuery();
ItemCount   =   dv.Count;

PagedDataSource   pds   =   new   PagedDataSource();
pds.DataSource   =   dv;
pds.AllowPaging   =   true;
pds.PageSize   =   10;
pds.CurrentPageIndex   =   CurrentPage   -   1;
PageCount   =   pds.PageCount;

try
{
dlCADStyleMaster.DataSource   =   pds;
dlCADStyleMaster.DataBind();
}
catch
{
this.DataGridBind();
}
}


private   void   dlCADStyleMaster_ItemCommand(object   source,   System.Web.UI.WebControls.DataListCommandEventArgs   e)
{
if   (e.CommandName   ==   "首页 ")
{
CurrentPage   =   1;
DataGridBind();
}
if   (e.CommandName   ==   "前十页 ")
{
CurrentPage   =   CurrentPage   -   10;
DataGridBind();
}
if   (e.CommandName   ==   "上一页 ")
{
CurrentPage   --;
DataGridBind();
}
if   (e.CommandName   ==   "下一页 ")
{
CurrentPage   ++;
DataGridBind();
}
if   (e.CommandName   ==   "后十页 ")
{
CurrentPage   =   CurrentPage   +   10;
DataGridBind();
}
if   (e.CommandName   ==   "末页 ")
{
CurrentPage   =   PageCount;
DataGridBind();
}
}

private   void   cmdSearch_Click(object   sender,   System.EventArgs   e)
{
CurrentPage   =   1;
DataGridBind();
}

private   void   dlCADStyleMaster_ItemCreated(object   sender,   System.Web.UI.WebControls.DataListItemEventArgs   e)
{
if   (e.Item.ItemType   ==   ListItemType.Header   ||   e.Item.ItemType   ==   ListItemType.Footer)
{
Label   Space   =   new   Label();
Label   PageStyleInfo   =   new   Label();
PageStyleInfo.Text   =   "   第 <font   color=red> "


                                          +   CurrentPage.ToString()
                                          +   " </font> 页/共 <font   color=red> "
                                          +   PageCount.ToString()
                                          +   " </font> 页 "
                                          +   "(共 <font   color=red> "   +   ItemCount.ToString()   +   " </font> 张单) ";

LinkButton   FirstPage   =   new   LinkButton();
FirstPage.Text   =   "首页 ";
FirstPage.CommandName   =   "首页 ";

LinkButton   PrevTen   =   new   LinkButton();
PrevTen.Text   =   "前十页 ";
PrevTen.CommandName   =   "前十页 ";

LinkButton   PrevPage   =   new   LinkButton();
PrevPage.Text   =   "上一页 ";
PrevPage.CommandName   =   "上一页 ";

LinkButton   NextPage   =   new   LinkButton();
NextPage.Text   =   "下一页 ";
NextPage.CommandName   =   "下一页 ";

LinkButton   NextTen   =   new   LinkButton();
NextTen.Text   =   "后十页 ";
NextTen.CommandName   =   "后十页 ";

LinkButton   LastPage   =   new   LinkButton();
LastPage.Text   =   "末页 ";
LastPage.CommandName   =   "末页 ";

Space   =   new   Label();
Space.Text   =   "&nbsp;&nbsp; ";
e.Item.Controls.AddAt(0,   Space);
e.Item.Controls.AddAt(0,   LastPage);

Space   =   new   Label();
Space.Text   =   "&nbsp;&nbsp; ";
e.Item.Controls.AddAt(0,   Space);
e.Item.Controls.AddAt(0,   NextTen);

Space   =   new   Label();
Space.Text   =   "&nbsp;&nbsp; ";
e.Item.Controls.AddAt(0,   Space);
e.Item.Controls.AddAt(0,   NextPage);

Space   =   new   Label();
Space.Text   =   "&nbsp;&nbsp; ";
e.Item.Controls.AddAt(0,   Space);
e.Item.Controls.AddAt(0,   PrevPage);

Space   =   new   Label();
Space.Text   =   "&nbsp;&nbsp; ";
e.Item.Controls.AddAt(0,   Space);
e.Item.Controls.AddAt(0,   PrevTen);

Space   =   new   Label();
Space.Text   =   "&nbsp;&nbsp; ";
e.Item.Controls.AddAt(0,   Space);
e.Item.Controls.AddAt(0,   FirstPage);

Space   =   new   Label();
Space.Text   =   "&nbsp;&nbsp; ";
e.Item.Controls.AddAt(0,   Space);


e.Item.Controls.AddAt(0,   PageStyleInfo);

//如果当前页面是第一页
FirstPage.Enabled   =   (CurrentPage   !=   1);
PrevTen.Enabled   =   (CurrentPage   !=   1);
PrevPage.Enabled   =   (CurrentPage   !=   1);

//如果当前页面是最后一页
LastPage.Enabled   =   (CurrentPage   !=   PageCount);
NextTen.Enabled   =   (CurrentPage   !=   PageCount);
NextPage.Enabled   =   (CurrentPage   !=   PageCount);

NextTen.Enabled   =   (CurrentPage   +   10   <=   PageCount);
PrevTen.Enabled   =   (CurrentPage   -   10   > =   1);
}
}


页面文件:
<asp:datalist   id= "dlCADStyleMaster "   style= "Z-INDEX:   105;   LEFT:   8px;   POSITION:   absolute;   TOP:   144px "
runat= "server "   RepeatColumns= "1 "   RepeatDirection= "Horizontal ">
<HeaderTemplate>
<FONT   face= "宋体 "> </FONT>
</HeaderTemplate>
<FooterStyle   HorizontalAlign= "Right "   Height= "30px "   ForeColor= "#330099 "   BorderStyle= "Ridge "   BackColor= "#FFFFCC "> </FooterStyle>
<FooterTemplate>
<FONT   face= "宋体 "> </FONT>
</FooterTemplate>

[解决办法]
GetDataSource();

查查他吧,用datalist/grid的自带分页,必须把所有记录全取出来,但仍然有很多问题,页码计算要和他内部关联起来
[解决办法]
PagedDataSource 应该是这个类的问题.
[解决办法]
GetDataSource()
或者
PagedDataSource;写的有问题吧
[解决办法]
public partial class DooDleShow : System.Web.UI.Page
{
int PerPage = 4;
protected void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
ViewState[ "CurrentPageNumber "]=1;
LinkButton1.Enabled=false;
LinkButton2.Enabled=false;
bind();
fenye();

}
}
public void fenye()
{
LinkButton1.Enabled=(int)ViewState[ "CurrentPageNumber "]==1?false:true;
LinkButton2.Enabled=(int)ViewState[ "CurrentPageNumber "]==1?false:true;
LinkButton3.Enabled=(int)ViewState[ "CurrentPageNumber "]==(int)ViewState[ "PageCount "]?false:true;
LinkButton4.Enabled=(int)ViewState[ "CurrentPageNumber "]==(int)ViewState[ "PageCount "]?false:true;
}
public void bind()
{
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings[ "SQLCONNECTIONSTRING "]);
int newTop = PerPage * (int)ViewState[ "CurrentPageNumber "];
int oldTop = newTop - PerPage;
string str = "select * from (select top "+newTop+ " * from [DoodleLabel] order by DooDle_ID DESC) a where a. DooDle_ID not in(select top "+oldTop+ " DooDle_ID from [DoodleLabel] order by DooDle_ID DESC) order by DooDle_ID DESC ";
SqlCommand cm = new SqlCommand(str,cn);
SqlDataAdapter da = new SqlDataAdapter(cm);
DataSet dr = new DataSet();
da.Fill(dr);
DataList1.DataSource=dr;
DataList1.DataBind();

cm.CommandText= "select count(DooDle_ID) from [DoodleLabel] ";


cn.Open();
int cout = (int)cm.ExecuteScalar();
cn.Close();
int PageCount = cout%PerPage==0?cout/PerPage:cout/PerPage+1;
ViewState[ "PageCount "]=PageCount;
int PageIndex = (int)ViewState[ "CurrentPageNumber "];
Label1.Text= "第 "+PageIndex+ "页/共 "+PageCount + "页 ";


}

private void LinkButton1_Click(object sender, System.EventArgs e)
{//第一页
ViewState[ "CurrentPageNumber "]=1;
fenye();
bind();
}

private void LinkButton2_Click(object sender, System.EventArgs e)
{//上一页
ViewState[ "CurrentPageNumber "]=(int)ViewState[ "CurrentPageNumber "]-1;
fenye();
bind();
}

private void LinkButton3_Click(object sender, System.EventArgs e)
{//下一页
ViewState[ "CurrentPageNumber "]=(int)ViewState[ "CurrentPageNumber "]+1;
fenye();
bind();
}

private void LinkButton4_Click(object sender, System.EventArgs e)
{//最后一页
ViewState[ "CurrentPageNumber "]=(int)ViewState[ "PageCount "];
fenye();
bind();
}


}
}
[解决办法]
mark
[解决办法]
问题在这里面
private void DataGridBind()
{
DataView dv = GetDataSource();

dv.RowFilter = InitQuery();
ItemCount = dv.Count;

PagedDataSource pds = new PagedDataSource();
pds.DataSource = dv;
pds.AllowPaging = true;
pds.PageSize = 10;
pds.CurrentPageIndex = CurrentPage - 1;
PageCount = pds.PageCount;

try
{
dlCADStyleMaster.DataSource = pds;
dlCADStyleMaster.DataBind();
}
catch
{
this.DataGridBind();
}
}
你把涉及到的类的代码贴出来吧
[解决办法]
学习
[解决办法]
看到头都大了
[解决办法]
jf up 学习

热点排行