有很多方法可以做到这一点。一个是使用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>
在服务器端做到这一点的另一种方法。您可以添加控制,并根据对命令的排序状态更改ImageUrl属性排序
<asp:ImageUrl ID="imgSort" runat="server" />
代码背后
if (sortAsc)
{
imgSort.ImageUrl = "up.png";
}
// and so on
你会这个图像添加到列表视图
第二种方式的布局模板是我想到它的方式,但如何确定(sortAsc)? –
通常它会变成非asc-desc-none,然后继续。所以你可以通过查看加载到图像控件中的当前图像来确定它,或者可以在ViewState中保持状态。 – fenix2222
我已经尝试了上述,只是获取changeSortState()是未定义的。即使它在asp:Content字段中。任何想法为什么不采取它?我的aspx页面有两个内容字段。 –