这个问题我问了好两次了,可是都没得到解决。
就是电子相册的分页问题。
有朋友给我看过分页的源代码,可是都用到了dataset可是电子相册用不到dataset怎么办。
有人说用XML(可是怎么用XML?)我下了一个用XML的电子相册可是它是DLL文件(怎么看啊?)
我就是想知道怎么样能给电子相册datalist分页,要解决方法(而不是用这个用那个那都是废话)。或是那本书上有解决这个问题的方法我可以去买。
请大家帮助,我不相信,我们的CSDN里面没有这样的高手。
就是电子相册的分页问题。
有朋友给我看过分页的源代码,可是都用到了dataset可是电子相册用不到dataset怎么办。
有人说用XML(可是怎么用XML?)我下了一个用XML的电子相册可是它是DLL文件(怎么看啊?)
我就是想知道怎么样能给电子相册datalist分页,要解决方法(而不是用这个用那个那都是废话)。或是那本书上有解决这个问题的方法我可以去买。
请大家帮助,我不相信,我们的CSDN里面没有这样的高手。
http://dotnet.aspx.cc/ShowDetail.aspx?id=D5C6E29D-99F5-44E8-4FED-75AF892A53CB
是这个意思吗?
{
// ÔÚ´Ë´¦·ÅÖÃÓû§´úÂëÒÔ³õʼ»¯Ò³Ãæ
PageSize=10;
if(!Page.IsPostBack)
{
CurrentPage =0;
ViewState["PageIndex"] = 0;
//¼ÆËãÓжàÉټǼ
MyDataBase MyCount=new MyDataBase();
MyCount.SqlString="select * from tb_guest";
RecordCount=MyCount.GetDataSet.Tables[0].Rows.Count;
//¼ÆËãÓжàÒ³
if(RecordCount%PageSize==0)
{
PageCount=RecordCount/PageSize;
LB_pagecount.Text=PageCount.ToString();
ViewState["PageCount"] = PageCount;
}
else
{
PageCount=RecordCount/PageSize+1;
LB_pagecount.Text=PageCount.ToString();
ViewState["PageCount"] = PageCount; }
//DataListÏÔʾ
ListBind();
DDLBind();
}
}
{
int StartIndex;
StartIndex=PageSize*CurrentPage;
MyDataBase MyList=new MyDataBase();
MyList.SqlString="select * from tb_guest order by guest_id desc";
DataList1.DataSource=MyList.FreeDataSoure(StartIndex,PageSize);
DataList1.DataBind();
Btn_prev.Enabled=true;
Btn_next.Enabled=true;
if(CurrentPage==0){Btn_prev.Enabled=false;}
if(CurrentPage==PageCount-1){Btn_next.Enabled=false;}
int CurrentNum=CurrentPage+1;
Lb_currentpage.Text=CurrentNum.ToString();
MyList.Close(); }
{
//Ê×Ò³
CurrentPage = (int)ViewState["PageIndex"];
PageCount = (int)ViewState["PageCount"];
CurrentPage=0;
ViewState["PageIndex"] = CurrentPage;
ListBind();
} private void Btn_last_Click(object sender, System.EventArgs e)
{
CurrentPage = (int)ViewState["PageIndex"];
PageCount = (int)ViewState["PageCount"];
CurrentPage=PageCount-1;
ViewState["PageIndex"] = CurrentPage;
ListBind();
} private void Btn_prev_Click(object sender, System.EventArgs e)
{
//ÉÏÒ»Ò³
CurrentPage = (int)ViewState["PageIndex"];
PageCount = (int)ViewState["PageCount"];
if(CurrentPage>0) CurrentPage--;
ViewState["PageIndex"] = CurrentPage;
ListBind();
} private void Btn_next_Click(object sender, System.EventArgs e)
{
CurrentPage = (int)ViewState["PageIndex"];
PageCount = (int)ViewState["PageCount"];
if(CurrentPage<(PageCount-1)) CurrentPage++;
ViewState["PageIndex"] = CurrentPage;
ListBind();
} private void Btn_go_Click(object sender, System.EventArgs e)
{
CurrentPage = (int)ViewState["PageIndex"];
PageCount = (int)ViewState["PageCount"];
CurrentPage=Convert.ToInt32(DDL1.SelectedItem.Value.ToString());
ViewState["PageIndex"] = CurrentPage;
ListBind();
}
楼主可以用SQL语句分页和我上面给你的PagedDataSource
结合做!
create PROCEDURE PF_GetRecordFromPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@IsCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)
ASdeclare @strSQL varchar(2000) -- 主语句
declare @strTmp varchar(1000) -- 临时变量
declare @strOrder varchar(1000) -- 排序类型if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by [' + @fldName +'] desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by [' + @fldName +'] asc'
endset @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
+ @strOrderif @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + '] where (' + @strWhere + ') '
+ @strOrder + ') as tblTmp) and (' + @strWhere + ') ' + @strOrderif @PageIndex = 1
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where (' + @strWhere + ')' set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
+ @tblName + ']' + @strTmp + ' ' + @strOrder
endif @IsCount != 0
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'exec (@strSQL)GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
{
MyConnection=new SqlConnection(ConfigurationSettings.AppSettings["strConnection"]);
MyConnection.Open();
SqlCommand MyCommand=new SqlCommand(SqlString,MyConnection);
SqlDataAdapter MyDataAdapter=new SqlDataAdapter();
ds=new DataSet();
try
{
MyDataAdapter.SelectCommand=MyCommand;
MyDataAdapter.Fill(ds,StartIndex,PageSize,"table");
}
catch
{
} if(MyDataAdapter!=null)
{
MyDataAdapter.Dispose();
}
if(MyCommand!=null)
{
MyCommand.Dispose();
}
if(MyConnection!=null)
{
MyConnection.Close();
MyConnection.Dispose();
}
return ds.Tables[0].DefaultView;
}
然后用ViewState来保存PageIndex
来分页这么做都行。
数据量大的时候用存储过程分页效率高些。看看上面的关键的几句话就行了。