2017-02-09 60 views
0

我正在尝试按控件内容对ListView列进行排序 - 在本例中是Label,而不是SQL本身。这是由于在后面的C#代码中计算以显示LV ItemTemplate列中的文本。ListView根据标签控件ID排序列

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

所以在代码方面,如果标签是:

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

我想要的ListView(我斗胆对LV数据绑定的猜测),其中,在默认情况下,排序在标签中产生的价值例。

我希望这是有道理的,但很乐意进一步澄清。感谢一个负载家伙。

回答

0

我会建议在将数据绑定到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; } 
} 

你的结果会像

产品名称:书

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

交货日期:2017年1月8日12:00:00 AM

-

产品名称:电话

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

交货日期:2017年1月19日12:00:00 AM

-

产品名称:台

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

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

+0

感谢沙希德,所以基本上填充重新列表令人难以置信的数据集和命令。好的电话,绝对值得一试。再次感谢 – rambini

+0

没问题。如果问题得到解答,请不要忘记解决问题。 –