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

本文介绍如何使用ASP.NET中的Repeater控件实现数据排序功能,并通过代码演示了如何在点击按钮时触发排序,同时保持排序图标状态一致。

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

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




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值