C# 通过ObjectDataSource进行分页的中继器
是否可以使用ObjectDataSource的:C# 通过ObjectDataSource进行分页的中继器,c#,asp.net,C#,Asp.net,是否可以使用ObjectDataSource的: EnablePaging="true" MaximumRowsParameterName="maximumRows" StartRowIndexParameterName="startRowIndex" SelectCountMethod="TotalNumberOfProducts"> 或者我必须在代码隐藏中设置所有值,并将其传递给ObjectDataSource的参数: <SelectParameters> &l
EnablePaging="true"
MaximumRowsParameterName="maximumRows"
StartRowIndexParameterName="startRowIndex"
SelectCountMethod="TotalNumberOfProducts">
或者我必须在代码隐藏中设置所有值,并将其传递给ObjectDataSource的参数:
<SelectParameters>
<asp:Parameter Name="startRowIndex" DbType="Int32" DefaultValue="0" />
<asp:Parameter Name="maximumRows" DbType="Int32" DefaultValue="10" />
</SelectParameters>
因为中继器不支持分页,您无法使用Objectdatasource实现这一点。。。
但如果要进行分页,则必须在代码级别处理。。。
我在代码级别对datalist进行了分页,因为datalist也不支持分页。。。
如果您需要代码,我可以为您提供。。。。 当您想将数据绑定到中继器时,请调用bindRpt方法,注意:这个示例处理“下一步”、“上一步”、“第一步”按钮的分页。。。。如果有什么不清楚的,请告诉我
private void BindRpt()
{
PagedDataSource ObjPds;
ObjPds = DoPagging((DataTable)ViewState["dtblProducts"]);
dlProducts.DataSourceID = "";
dlProducts.DataSource = ObjPds;
dlProducts.DataBind();
}
protected PagedDataSource DoPagging(DataTable dt)
{
if (dt.Rows.Count > 0)
{
lblNoRecord.Visible = false;
pnlNavigation.Visible = true;
pnlTopNavigation.Visible = true;
}
else
{
lblNoRecord.Visible = true;
pnlNavigation.Visible = false;
pnlTopNavigation.Visible = false;
}
PagedDataSource ObjPagDataSource = new PagedDataSource(); //'declares the paged data source
ObjPagDataSource.DataSource = dt.DefaultView;
ObjPagDataSource.AllowPaging = true;
ObjPagDataSource.PageSize = PgSize;
if (hdfPageIndex.Value == "SetLastPageIndex")
{
CurrentPageIndx = ObjPagDataSource.PageCount - 1;
ObjPagDataSource.CurrentPageIndex = ObjPagDataSource.PageCount - 1;
}
else
{
ObjPagDataSource.CurrentPageIndex = CurrentPageIndx;
}
if (ObjPagDataSource.PageCount > 1)
{
if (ObjPagDataSource.IsFirstPage == true)
{
ibtnLast.Enabled = true;
ibtnFirst.Enabled = false;
ibtnPrevious.Enabled = false;
ibtnNext.Enabled = true;
ibtnLastTop.Enabled = true;
ibtnFirstTop.Enabled = false;
ibtnPreviousTop.Enabled = false;
ibtnNextTop.Enabled = true;
}
else if (ObjPagDataSource.IsLastPage == true)
{
ibtnFirst.Enabled = true;
ibtnLast.Enabled = false;
ibtnNext.Enabled = false;
ibtnPrevious.Enabled = true;
ibtnFirstTop.Enabled = true;
ibtnLastTop.Enabled = false;
ibtnNextTop.Enabled = false;
ibtnPreviousTop.Enabled = true;
}
else
{
ibtnFirst.Enabled = true;
ibtnPrevious.Enabled = true;
ibtnNext.Enabled = true;
ibtnLast.Enabled = true;
ibtnFirstTop.Enabled = true;
ibtnPreviousTop.Enabled = true;
ibtnNextTop.Enabled = true;
ibtnLastTop.Enabled = true;
}
}
else
{
ibtnFirst.Enabled = false;
ibtnLast.Enabled = false;
ibtnPrevious.Enabled = false;
ibtnNext.Enabled = false;
ibtnFirstTop.Enabled = false;
ibtnLastTop.Enabled = false;
ibtnPreviousTop.Enabled = false;
ibtnNextTop.Enabled = false;
}
return ObjPagDataSource;
}
public int CurrentPageIndx
{
get
{
System.Object o = this.ViewState["_CurrentPageIndx"];
if (o == null)
return 0;
else
return Convert.ToInt32(o);
}
set
{
ViewState["_CurrentPageIndx"] = value;
}
}
protected void ibtnFirst_Click(object sender, ImageClickEventArgs e)
{
hdfPageIndex.Value = "";
CurrentPageIndx = 0;
BindRpt();
}
protected void ibtnPrevious_Click(object sender, ImageClickEventArgs e)
{
hdfPageIndex.Value = "";
CurrentPageIndx = CurrentPageIndx - 1;
BindRpt();
}
protected void ibtnNext_Click(object sender, ImageClickEventArgs e)
{
hdfPageIndex.Value = "";
CurrentPageIndx = CurrentPageIndx + 1;
BindRpt();
}
protected void ibtnLast_Click(object sender, ImageClickEventArgs e)
{
hdfPageIndex.Value = "SetLastPageIndex";
BindRpt();
}
是的,请这样做,我会很感激的。如果我没有弄错的话,这个解决方案在表示层而不是数据访问层上进行分页,对吗?是的,你是对的,如果你想在数据访问层上进行分页,最好是在存储过程层上进行…:)