asp.net ListView排序箭头

时间:2012-06-14 22:12:26

标签: c# asp.net image listview sorting

如何将一个箭头图像(向上或向下)添加到列表视图的标题中,以便在单击它时按升序/降序对列进行排序?

目前我只有一个链接来进行排序:

<asp:LinkButton runat="server" ID="sortPosition" CommandName="Sort" CommandArgument="Position" >Position</asp:LinkButton>

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。一种是使用jquery在客户端进行。您可以添加跨度或div或图像,并根据排序状态使用jquery进行切换。

<style>
    .sortNotSelected
    {
        background-image: none;
        width: 15px;
        height: 15px;
    }
    .sortAscending
    {
        background-image: url('down.png');
        width: 15px;
        height: 15px;
    }
    .sortDescending
    {
        background-image: url('up.png');
        width: 15px;
        height: 15px;
    }

</style>

<asp:LinkButton runat="server" ID="sortPosition" CommandName="Sort" CommandArgument="Position" OnClientClick="changeSortState();">Position</asp:LinkButton>
<span id="imgSortPosition" class="sortNotSelected"></span>

<script>
    function changeSortState(){
        if ($('#imgSortPosition').attr('class') == 'sortNotSelected'){
            $('#imgSortPosition').removeClass();
            $('#imgSortPosition').addClass('sortAscending');
        }  
        else if ($('#imgSortPosition').attr('class') == 'sortAscending'){
            $('#imgSortPosition').removeClass();
            $('#imgSortPosition').addClass('sortDescending');
        }  
        else 
            $('#imgSortPosition').removeClass();
            $('#imgSortPosition').addClass('sortNotSelected');
        }  

    }
</script>

在服务器端执行此操作的另一种方法。您可以根据Command Sort

上的排序状态添加控件并更改ImageUrl属性
<asp:ImageUrl ID="imgSort" runat="server" />

背后的代码

if (sortAsc)
{
    imgSort.ImageUrl = "up.png";
}

// and so on

您可以将此图像添加到listview的布局模板