2012年11月1日星期四

Repeater排序

Repeater排序

  1. repeater
    <asp:Repeater ID="rptGroups" runat="server" OnItemDataBound="rptGroups_ItemDataBound" OnItemCommand="rptGroups_ItemCommand">
  2. rd
    <td>                                <asp:LinkButton ID="lbname" Runat="server" text="名称" CommandName="lbname"></asp:LinkButton>                            </td>                            <td>                                <asp:LinkButton ID="lbdate" Runat="server" text="时间" CommandName="lbdate"></asp:LinkButton>                            </td>                            <td>                                <asp:LinkButton ID="lbdays" Runat="server" text="天数" CommandName="lbdays"></asp:LinkButton>                            </td>
  3. ItemDataBound
        protected void rptGroups_ItemDataBound(object sender, RepeaterItemEventArgs e)    {        if (e.Item.ItemType == ListItemType.Header)        {            if (ViewState["id"] != null)            {                LinkButton lkbtnSort = (LinkButton)e.Item.FindControl(ViewState["id"].ToString().Trim());                lkbtnSort.Text = ViewState["text"].ToString();            }        }    }
  4. ItemCommand
        protected void rptGroups_ItemCommand(object source, RepeaterCommandEventArgs e)    {        if (e.Item.ItemType == ListItemType.Header)        {            LinkButton lkbtnSort = (LinkButton)e.Item.FindControl(e.CommandName.Trim());            if (ViewState[e.CommandName.Trim()] == null)            {                ViewState[e.CommandName.Trim()] = "ASC";                lkbtnSort.Text = lkbtnSort.Text + "↑";            }            else            {                if (ViewState[e.CommandName.Trim()].ToString().Trim() == "ASC")                {                    ViewState[e.CommandName.Trim()] = "DESC";                    if (lkbtnSort.Text.IndexOf("↑") != -1)                        lkbtnSort.Text = lkbtnSort.Text.Replace("↑", "↓");                    else                        lkbtnSort.Text = lkbtnSort.Text + "↓";                }                else                {                    ViewState[e.CommandName.Trim()] = "ASC";                    if (lkbtnSort.Text.IndexOf("↓") != -1)                        lkbtnSort.Text = lkbtnSort.Text.Trim().Replace("↓", "↑");                    else                        lkbtnSort.Text = lkbtnSort.Text + "↑";                }            }            ViewState["text"] = lkbtnSort.Text;            ViewState["id"] = e.CommandName.Trim();            IList<Model.DJ_TourGroup> tglist = (IList<Model.DJ_TourGroup>)rptGroups.DataSource;            switch (e.CommandName.Trim())            {                case "lbname":                    if (ViewState[e.CommandName.Trim()].ToString().Trim() == "ASC")                        tglist = tglist.OrderBy(x => x.Name).ToList();                    else                        tglist = tglist.OrderByDescending(x => x.Name).ToList();                    break;                case "lbdate":                    if (ViewState[e.CommandName.Trim()].ToString().Trim() == "ASC")                        tglist = tglist.OrderBy(x => x.BeginDate).ToList();                    else                        tglist = tglist.OrderByDescending(x => x.BeginDate).ToList();                    break;                case "lbdays":                    if (ViewState[e.CommandName.Trim()].ToString().Trim() == "ASC")                        tglist = tglist.OrderBy(x => x.DaysAmount).ToList();                    else                        tglist = tglist.OrderByDescending(x => x.DaysAmount).ToList();                    break;            }            rptGroups.DataSource = tglist;            rptGroups.DataBind();        }    }



TAG: