【asp.net小札记】Repeater自定义添加排序按钮+显示图片

1、Repeater源码:
<asp:Repeater ID="Repeater1" runat="server" 
                onitemcommand="Repeater1_ItemCommand" 
                onitemdatabound="Repeater1_ItemDataBound">                             
            <HeaderTemplate>
                <table class="T_repeater">
                    <thead>                       
                            <td>图片编号<asp:Button ID="btnPicno" CommandName="btnPicno" runat="server" Text="" CssClass="arrow asc"/></td> 
                            <td>图片</td>                          
                            <td>发音</td>
                            <td>解释</td>
                            <td>笔画</td>
                            <td>考释日期</td>
                            <td>资料编号</td>
                            <td>考释用户</td>
                            <td>备注</td>                        
                    </thead>                
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td><%#Eval("pictureid") %></td>
                    <td><%#"<img id='img01' runat='server' width='20px' height='20px' src='" + AncientCharPlatform.BLL.PictureInfoManager.GetPictureInfoByPicId(Eval("pictureid").ToString()).Path + "' />" %></td>                    
                    <td><%#Eval("pronunciation") %></td>
                    <td><%#Eval("meaning") %></td>
                    <td><%#Eval("strokes") %></td>
                    <td><%#Eval("condate") %></td>
                    <td><%#Eval("materialid") %></td>
                    <td><%#AncientCharPlatform.BLL.UserInfoManager.GetUserInfoByUserid((int?)Eval("userid")).Username %></td>                    
                    <td><%#Eval("remark") %></td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>

 

2、点击Repeater中的排序按钮时,触发的事件:

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName == "btnPicno")
        {
            Button btn = e.Item.FindControl("btnPicno") as Button;
            List<ConclusionInfo> list = GetFuzzyQueryResult();           

            if (btn.CssClass.Contains("desc"))
            {
                hfBtnPicno.Value = "arrow asc";
                var v = from l in list
                        orderby l.PictureID ascending
                        select l;
                list = v.ToList<ConclusionInfo>();                    
            }
            else
            {                
                hfBtnPicno.Value = "arrow desc";
                var v = from l in list
                        orderby l.PictureID descending
                        select l;
                list = v.ToList<ConclusionInfo>();                           
            }
            this.Repeater1.DataSource = list;
            this.Repeater1.DataBind();           
        }
    }

 

3、纠正排序按钮(黑三角)显示问题:

//
    //  repeater重新绑定数据时
    //  header里的button的样式就恢复默认了
    //  所以在这里纠正一下样式
    //
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Header)
        {
            Button btn = e.Item.FindControl("btnPicno") as Button;
            btn.CssClass = hfBtnPicno.Value;
        }
    }