C# ListView按标签控件ID对列进行排序

C# ListView按标签控件ID对列进行排序,c#,asp.net,listview,C#,Asp.net,Listview,我试图按控件内容对ListView列进行排序,在本例中是一个标签,而不是SQL本身。这是由于C#code behind中的计算将文本显示在LV ItemTemplate的列中 控件内容是日期显示值(英国短日期格式) 因此,在代码术语中,如果标签为: <asp:Label runat="server" ID="lbDateSort" Text='<%# CalculateDate() %>' /> 默认情况下,我希望ListView(我在LV DataBound上使用

我试图按控件内容对ListView列进行排序,在本例中是一个标签,而不是SQL本身。这是由于C#code behind中的计算将文本显示在LV ItemTemplate的列中

控件内容是日期显示值(英国短日期格式)

因此,在代码术语中,如果标签为:

<asp:Label runat="server" ID="lbDateSort" Text='<%# CalculateDate() %>' />

默认情况下,我希望ListView(我在LV DataBound上使用hazard guess)按照标签示例中的结果值进行排序


我希望这是有道理的,但很高兴进一步澄清。谢谢大家。我建议在将数据绑定到ListView之前先进行CalculateDate()逻辑和排序。例如:

假设您需要根据订单日期计算项目的交货日期

<asp:ListView ID="ListView1" runat="server">
    <ItemTemplate>
        Item Name: <asp:Label ID="lblItemName" runat="server" Text='<%# Eval("ItemName") %>' /></br>
        Order Date: <asp:Label ID="lblOrderDate" runat="server" Text='<%# Eval("OrderDate") %>' /></br>
        Delivery Date: <asp:Label ID="lblDeliveryDate" runat="server" Text='<%# Eval("DeliveryDate") %>' /></br>
        </br>
    </ItemTemplate>
</asp:ListView>

项目名称:
订购日期:
交货日期:

调用CalculateDeliveryDate(DateTime orderDate)方法以计算交付日期并更新集合背后的代码。将数据源分配给ListView时,您可以按照自己的意愿对集合进行排序

public partial class ListViewExample : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var data = new List<ListModel>
        {
            new ListModel { ItemName = "Phone", OrderDate = new DateTime(2017,1,12) },
            new ListModel { ItemName = "Book", OrderDate = new DateTime(2017,1,1) },
            new ListModel { ItemName = "Desk", OrderDate = new DateTime(2017,3,12) }
        };

        data.ForEach(x => x.DeliveryDate = CalculateDeliveryDate(x.OrderDate));

        ListView1.DataSource = data.OrderBy(x => x.DeliveryDate);
        ListView1.DataBind();
    }

    private DateTime CalculateDeliveryDate(DateTime orderDate)
    {
        return orderDate.AddDays(7);
    }
}

public class ListModel
{
    public string ItemName { get; set; }
    public DateTime OrderDate { get; set; }
    public DateTime DeliveryDate { get; set; }
}
public分部类ListViewExample:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
var数据=新列表
{
新列表模型{ItemName=“Phone”,OrderDate=new DateTime(2017,1,12)},
新列表模型{ItemName=“Book”,OrderDate=new DateTime(2017,1,1)},
新列表模型{ItemName=“Desk”,OrderDate=new DateTime(2017,3,12)}
};
data.ForEach(x=>x.DeliveryDate=calculatedDeliveryDate(x.OrderDate));
ListView1.DataSource=data.OrderBy(x=>x.DeliveryDate);
ListView1.DataBind();
}
专用日期时间CalculateDeliveryDate(日期时间订单日期)
{
退货订单日期。添加天数(7);
}
}
公共类列表模型
{
公共字符串ItemName{get;set;}
public DateTime OrderDate{get;set;}
public DateTime DeliveryDate{get;set;}
}
您的结果将如下所示

品名:书籍

订单日期:2017年1月1日12:00:00 AM

交付日期:2017年1月8日12:00:00

--

项目名称:电话

订单日期:2017年1月12日12:00:00 AM

交付日期:2017年1月19日12:00:00

--

项目名称:办公桌

订单日期:2017年3月12日12:00:00 AM


交付日期:2017年3月19日12:00:00 AM

谢谢Shahid,所以基本上用生成的数据集填充一个列表并进行排序。打得好,绝对值得一试。再次谢谢你,没问题。如果问题得到回答,别忘了把它结束。