我正在使用:<%# Eval("DataCadastro", "{0:MMMM / yyyy}")%>
,结果是:
“março/ 2008”
我希望它是:
“Março/ 2008”
知道怎么做吗?
答案 0 :(得分:2)
你有选择:
预先烹饪数据,使其始终与预期格式匹配
向代码隐藏(例如,FormatDataCadastro)添加一个方法,该方法将获取字段值并将其转换为预期的格式。您可以从ASPX调用它,前提是它的可访问性(我认为该方法可能需要公开才能执行此操作)。
在ASPX文件中进行转换。我不相信有一个格式字符串说明符可以自然地处理这种情况。您将需要获取第一个字符,大小写它,然后针对field.Substring(1)调用Eval语句(即字符串的其余部分)。
答案 1 :(得分:0)
如果有人需要......它就这样解决了:
protected void BoletinsListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
HyperLink docPdf = (HyperLink)e.Item.FindControl("ArquivoHyperLink");
docPdf.Text = ConvertToTitleCase(docPdf.Text);
}
}
public static String ConvertToTitleCase(String strParam)
{
String strTitle = strParam;
if (strParam.Length > 0)
{
strTitle = strParam.Substring(0, 1).ToUpper();
strParam = strParam.Substring(1).ToLower();
String strPrev = "";
for (int iIndex = 0; iIndex < strParam.Length; iIndex++)
{
if (iIndex > 1)
{
strPrev = strParam.Substring(iIndex - 1, 1);
}
if (strPrev.Equals(" ") ||
strPrev.Equals("\t") ||
strPrev.Equals("\n") ||
strPrev.Equals("."))
{
strTitle += strParam.Substring(iIndex, 1).ToUpper();
}
else
{
strTitle += strParam.Substring(iIndex, 1);
}
}
}
return strTitle;
}
答案 2 :(得分:0)
使用ToTitleCase方法。
var culture = CultureInfo.GetCultureInfo("pt-br");
var date = new DateTime(2008, 3, 1);
var dateString = date.ToString("MMMM / yyyy", culture);
var titleCased = culture.TextInfo.ToTitleCase(dateString);