2017-02-09 2 views
0

ListView列をコントロールコンテンツ(この場合はLabel)でソートしようとしていますが、SQL自体ではなくLabelです。これは、LV ItemTemplateの列にテキストを表示するためのC#コードの計算によるものです。ListViewのラベルコントロールによる並べ替え列

制御内容は、日付表示値(英国の短い日付形式)です。コード用語でそう

、ラベルがある場合:

<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

配信日:2017年1月8日午前12:00:00

-

アイテム名:電話

受注日:2017年1月12日午前12時00分00秒AM

配信日:2017年1月19日午前12時00分00秒AM

-

アイテム名:デスク

受注日:2017年3月12日午前12:00:00

配信日:2017年3月19日午前12:00:00

+0

おかげシャヒードので、基本的に再してリストを作成しますsultingデータセットとその順序。良いコール、そして確かに試してみる価値がある。再度ありがとう – rambini

+0

問題はありません。それが答えられたら、質問を閉じることを忘れないでください。 –