2010-01-15 20 views
3

好的,我的標題沒有幫助。但閱讀帖子,你會明白。如何更改過濾器和外鍵列在DynamicData站點中的呈現方式?

我想要做什麼:

想象我有一個傳單表,在我的SQL Server 2列:

  • FlyerID(INT)(PK)
  • FlyerDate(SMALLDATETIME)

FlyerID是其他表上的外鍵,例如Store表。商店有3列:

  • STOREID(INT)(PK)
  • 名稱(NVARCHAR)
  • FlyerID(INT)與 傳單表(FK)關係

現在,在DynamicData網站,我將有商店頁面和傳單頁面。我想用我的自定義格式顯示FlyerDate。例如,格式爲MMM-dd-yyyy。

在傳單頁面中,我遵循教程視頻所執行的方式:asp.net/learn/3.5-SP1/video-291.aspx完美地工作,顯示FlyerDate列的自定義格式。

但是,在商店頁面上,傳單列值(它們是超鏈接)不會以我的自定義格式顯示日期。另外,在過濾器(下拉列表)中不顯示自定義格式。

建議的失敗解決方案:http://ericphan.info/development/asp-net-dynamic-data-display-custom-text-in-a-foreign-key-dropdownlist-combobox給出錯誤「爲該表指定的顯示列'DisplayDate'不存在。」

.Net Framework 4.0測試版和實體框架。

[DisplayColumn("DisplayDate", "FlyerDate", true)] 
[MetadataType(typeof(FlyerMetadata))] 
public partial class Flyer 
{ 

    [ScaffoldColumn(true)] 
    public string DisplayDate 
    { 
     get { return this.FlyerDate.ToString("MMM-dd-yyyy"); } 
    } 

} 

public class FlyerMetadata 
{ 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MMM-dd-yyyy}")] 
    public DateTime FlyerDate { get; set; } 
} 

回答

1

我知道應該做什麼。覆蓋的ToString:

public partial class Flyer 
{ 

    public override string ToString() 
    { 
     return this.FlyerDate.ToString("MMM-dd-yyyy"); 
    } 

} 
1

你的財產DisplayDate具有正確的格式,所以只是參考它在你的元數據:

public class FlyerMetadata 
{ 
    public String DisplayDate { get; set; } 
} 
相關問題