用repeater、datalist的分页加排序完美方案

这篇博客介绍了如何在ASP.NET中使用Repeater和DataList实现数据排序和分页功能。通过双击链接触发服务器事件,结合JavaScript和隐藏字段管理排序字段和顺序。在后台,利用Session存储排序信息,动态调整数据源并绑定到控件,同时实现了按钮控制的页面导航功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Repeater 和datalist 实现排序功能和分页完美实现(双击升序排列,再双击降序排列).原理很简单,在<a href="#" onclick="">,用它来触发一个LinkButton的服务器事件.LinkButton的服务器事件里重新对数据源进行排序.然后再绑定Repeater或datalist上.
要实现,首先需要在HTML里面加个javascript函数和两个Hidden,一个用来储存要排序的字段,还有一个用来储存升序还是降序.(asc/desc)
Javascript代码如下:
<script language="javascript">
function Getsort(obj)
{
document.all.sortfield.value=obj;
if (document.all.sortstring.value == 'ASC')
{
document.all.sortstring.value = 'DESC';
}
else if (document.all.sortstring.value == 'DESC')
{
document.all.sortstring.value = 'ASC';
}
__doPostBack('LinkButton1','');
}
</script>
HTML中:
<INPUT type="hidden" id="sortfield" runat="server">
<INPUT type="hidden" id="sortstring" runat="server" value="ASC">

<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click"></asp:LinkButton>
<a href ="#" onclick ="Getsort('name');">【方法里是要排序的字段名】</a>

 

后台代码如下:用datalist实现,如果用repeater改下名即可

public partial class Datalist : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       
        if (!IsPostBack)
        {
            Session["fullsortstring"] = "price asc";//默认的排序方式
            datalist(Session["fullsortstring"].ToString ());
        }

    }

    public void datalist(string sort)
    {
      
      
            string sql = "select * from product order by id";
            int curpage = Convert.ToInt32(this.lbl.Text);

            System.Web.UI.WebControls.PagedDataSource ps = new PagedDataSource();//分页控件
            DataTable td = new DataTable();
            td = Database.RunDataTable(sql);//返回SQL语句所执行的表数据
            td.DefaultView.Sort = sort;
            ps.DataSource = td.DefaultView ;
           
            ps.AllowPaging = true;//允许分页
            ps.PageSize= 3;//每页显示条数3条
            ViewState["pagecount"] = ps.PageCount;//总页数
            ps.CurrentPageIndex = curpage - 1;//当前页
            this.Button1.Enabled = true;
            this.Button3.Enabled = true;
            if (curpage == 1)
            {
                Button1.Enabled = false;
            }
            if (curpage == ps.PageCount)
            {
                this.Button3.Enabled = false;
            }

            DataList1.DataSource = ps;//绑定到datalist上
            DataList1.DataBind();
           
           
        }


   
        protected void Button1_Click(object sender, EventArgs e)
        {
            //上一页
            this.lbl.Text = Convert.ToString(Convert.ToInt32(lbl.Text) - 1);
            string fullsortstring = Session["fullsortstring"].ToString();
            this.datalist(fullsortstring);
        }
        protected void Button3_Click(object sender, EventArgs e)
        {
            //下一页
            this.lbl.Text = Convert.ToString(Convert.ToInt32(lbl.Text) + 1);
            string fullsortstring = Session["fullsortstring"].ToString();
            this.datalist(fullsortstring);
        }
        protected void Button4_Click(object sender, EventArgs e)
        {
            //跳转到指定页数
             int n=Convert .ToInt32 ( ViewState ["pagecount"].ToString ());
           
            if (this.TextBox1.Text != null&&this.TextBox1 .Text !="")
            {
                string num = this.TextBox1.Text;
                int m = Convert.ToInt32(this.TextBox1.Text);
                if (m <= n)
                {
                    this.lbl.Text = num.ToString ();

                    this.datalist(Session["fullsortstring"].ToString());
                }
                Server.Transfer("Default.aspx");//提示错误页
            }
            else
            {
                Response.Write("<script language='javascript'>alert('请输入要翻页的页数')</script>");//此处用lable比较好,因为是测试所以没有加
            }

        }

  
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        string sortString = Request.Form["sortstring"].ToString();
        string sortfield = Request.Form["sortfield"].ToString();
        Session["fullsortstring"] = sortfield + " " + sortString;
        string fullsortstring = Session["fullsortstring"].ToString();//保存前台穿过来的数据。
        if (fullsortstring != null && fullsortstring != "")
        {
            datalist(fullsortstring);//绑定参数传给datalist、

        }

      
    }
}

 


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/waltguo/archive/2008/09/13/2920382.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值