【问题标题】:custom paging in repeater中继器中的自定义分页
【发布时间】:2014-01-24 15:24:43
【问题描述】:

我正在尝试在转发器中应用自定义分页并且它有效。但是当只有两个或三个记录时,它会在底部显示数字。

我想要的是,当至少有 8 到 10 条记录时,数字应该显示在底部,如 1,2,3 ..在我用红色方块表示的图像中......这是图像.

代码如下:

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();
}

这里是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>

【问题讨论】:

    标签: c# asp.net sorting repeater


    【解决方案1】:

    在数据视图中添加条件检查行数。

            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;
            }
    

    【讨论】:

    • 当我这样做时.... rptPaging.DataSource = pages; rptPaging.DataBind(); } else { rptPaging.Visible = false; } Repeater1.DataSource =pgitems; Repeater1.DataBind(); } 然后它向我显示错误“当前上下文中不存在 pgitem
    • 将 pgitems 初始化从 if 循环移动到数据视图(dv)声明的最旁边
    猜你喜欢
    • 2011-06-02
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多