在dropdownlist中设置从2012/11/01到2012年11月的日期格式格式格式C#

在dropdownlist中设置从2012/11/01到2012年11月的日期格式格式格式C#,c#,C#,大家好,我需要C#方面的帮助,如何使用DataTextFormatingString格式化带有日期的dataTextField monstart.DataSource = dt; monstart.DataTextField = "Period";//This return 2012/11/01, and i want to display it as November 2012 monstart.DataValueField = "SalaryMonthYear";

大家好,我需要C#方面的帮助,如何使用DataTextFormatingString格式化带有日期的dataTextField

    monstart.DataSource = dt;

   monstart.DataTextField = "Period";//This return 2012/11/01, and i want to display it as November 2012
   monstart.DataValueField = "SalaryMonthYear"; 
   //monstart.DataTextFormatString = "";
   monstart.DataBind();
   monstart.Items.Insert(0, " ");

您只需设置格式:

monstart.DataTextFormatString = "{0:MMMM yyyy}";
来解决我们关于是否允许自定义格式的问题。代码调用
DataBinder.GetPropertyValue
,并使用常规
string.Format
进行格式化:

// .NET DataBinder class
public static string GetPropertyValue(object container, string propName,
    string format)
{
    object propertyValue = DataBinder.GetPropertyValue(container, propName);
    if (propertyValue == null || propertyValue == DBNull.Value)
    {
        return string.Empty;
    }
    if (string.IsNullOrEmpty(format))
    {
        return propertyValue.ToString();
    }
    return string.Format(format, propertyValue);
}

从而表明自定义格式将在此范围内运行。

您可以使用此格式:

   monstart.DataTextFormatString = "MMMM dd. yyyy"
试试这个

monstart.DataTextFormatString = "{MMMM yyyy}";

不幸的是,这实际上行不通。根据文档,它需要我的答案中显示的语法@MichaelPerrenoud哦,我只是在“正常”日期时间测试了一下。。此外,OP没有指定实际日期,所以公平地说,我有点不确定:)(+1对你来说)真的支持所有格式字符串还是只支持列出的格式字符串?@TimSchmelter,我必须检查源代码,因为文档有点模糊。不足为奇。它确实声明
使用DataTextFormatString属性提供**自定义显示格式**列表控件中的项目。
但是,根据个人经验,我记得我做过类似的事情。让我把源代码拉出来。@TimSchmelter,请查看我的编辑,如果我遗漏了什么,请告诉我。@TimSchmelter,我想有一些关于
string.Format
的问题。如果我没有弄错的话,如果
类型不正确,它仍然不工作。因此,例如,如果
类型
实际上是一个
字符串
,那么格式在这里就不起作用。我知道我以前在这方面遇到过问题。@MichaelPerrenoud,我尝试使用上面的格式:“{0:MMMM yyyy}”,但不幸的是,它不起作用,也没有给我一个错误,它仍然在下拉列表上显示日期为2011/11/01。当我使用这种格式(monstart.DataTextFormatString=“{MMMM yyyyy}”)时,我收到一个错误“输入字符串的格式不正确。”