C# 中继器中的自定义分页
我正在尝试在中继器中应用自定义分页,它可以工作。但当只有两三条记录时,它会在底部显示数字 我想要的是,当至少有8到10条记录时,数字应该显示在底部,比如1,2,3..在我用红色方块表示的图像中。。。。这是图片。 代码如下:C# 中继器中的自定义分页,c#,asp.net,sorting,repeater,C#,Asp.net,Sorting,Repeater,我正在尝试在中继器中应用自定义分页,它可以工作。但当只有两三条记录时,它会在底部显示数字 我想要的是,当至少有8到10条记录时,数字应该显示在底部,比如1,2,3..在我用红色方块表示的图像中。。。。这是图片。 代码如下: protected void BindRepeater() { SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["mydms"].ConnectionStrin
protected void BindRepeater()
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["mydms"].ConnectionString.ToString());
SqlCommand cmd = new SqlCommand("sphrdoc2", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@UserID", Convert.ToInt32(Session["UserID"]));
if (con.State == ConnectionState.Closed)
{
con.Open();
}
DataTable dt = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(cmd);
adp.Fill(dt);
PagedDataSource pgitems = new PagedDataSource();
DataView dv = new DataView(dt);
pgitems.DataSource = dv;
pgitems.AllowPaging = true;
pgitems.PageSize = 2;
pgitems.CurrentPageIndex = PageNumber;
if (pgitems.PageCount > 1)
{
rptPaging.Visible = true;
ArrayList pages = new ArrayList();
for (int i = 0; i < pgitems.PageCount; i++)
pages.Add((i + 1).ToString());
rptPaging.DataSource = pages;
rptPaging.DataBind();
}
else
{
rptPaging.Visible = false;
}
Repeater1.DataSource = pgitems;
Repeater1.DataBind();
}
public int PageNumber
{
get
{
if (ViewState["PageNumber"] != null)
return Convert.ToInt32(ViewState["PageNumber"]);
else
return 0;
}
set
{
ViewState["PageNumber"] = value;
}
}
protected void rptPaging_ItemCommand(object source, RepeaterCommandEventArgs e)
{
PageNumber = Convert.ToInt32(e.CommandArgument) - 1;
BindRepeater();
}
受保护的void BindRepeater()
{
SqlConnection con=newsqlconnection(ConfigurationManager.ConnectionStrings[“mydms”].ConnectionString.ToString());
SqlCommand cmd=新的SqlCommand(“sphrdoc2”,con);
cmd.CommandType=CommandType.storedProcess;
cmd.Parameters.AddWithValue(“@UserID”,Convert.ToInt32(会话[“UserID]”));
if(con.State==ConnectionState.Closed)
{
con.Open();
}
DataTable dt=新的DataTable();
SqlDataAdapter adp=新的SqlDataAdapter(cmd);
自动进料(dt);
PagedDataSource pgitems=新的PagedDataSource();
数据视图dv=新数据视图(dt);
pgitems.DataSource=dv;
pgitems.allowpage=true;
pgitems.PageSize=2;
pgitems.CurrentPageIndex=页码;
如果(pgitems.PageCount>1)
{
rptpage.Visible=true;
ArrayList pages=新建ArrayList();
对于(int i=0;i
这是html
<asp:Repeater ID="rptPaging" runat="server" onitemcommand="rptPaging_ItemCommand">
<ItemTemplate>
<asp:LinkButton ID="btnPage" style="padding:8px; margin:2px; background:#20B2AA; border:solid 1px #666; font:8pt tahoma;" CommandName="Page" CommandArgument="<%# Container.DataItem %>" runat="server" ForeColor="White" Font-Bold="True"><%# Container.DataItem %>
</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
在数据视图中添加条件检查行数计数
DataView dv = new DataView(dt);
if{dv.Table.Rows.Count > 10)
{
PagedDataSource pgitems = new PagedDataSource();
pgitems.DataSource = dv;
pgitems.AllowPaging = true;
pgitems.PageSize = 2;
pgitems.CurrentPageIndex = PageNumber;
rptPaging.Visible = true;
ArrayList pages = new ArrayList();
for (int i = 0; i < pgitems.PageCount; i++)
pages.Add((i + 1).ToString());
rptPaging.DataSource = pages;
rptPaging.DataBind();
}
else
{
rptPaging.Visible = false;
}
DataView dv=newdataview(dt);
如果{dv.Table.Rows.Count>10)
{
PagedDataSource pgitems=新的PagedDataSource();
pgitems.DataSource=dv;
pgitems.allowpage=true;
pgitems.PageSize=2;
pgitems.CurrentPageIndex=页码;
rptpage.Visible=true;
ArrayList pages=新建ArrayList();
对于(int i=0;i
当我这样做时,…rptPaging.DataSource=pages;rptPaging.DataBind();}else{rptPaging.Visible=false;}Repeater1.DataSource=pgitems;Repeater1.DataBind();}然后显示错误“当前上下文中不存在pgitems将pgitems初始化从if循环移动到数据视图(dv)声明旁边