C# 如何在asp:BoundField中将日期和数字从英语翻译为阿拉伯语
这是我的HTML。我希望DataGridView中的日期是阿拉伯文的,我希望详细的解决方案,因为我是asp.net的初学者C# 如何在asp:BoundField中将日期和数字从英语翻译为阿拉伯语,c#,asp.net,gridview,C#,Asp.net,Gridview,这是我的HTML。我希望DataGridView中的日期是阿拉伯文的,我希望详细的解决方案,因为我是asp.net的初学者 我找到了这段代码,但我不知道把它放在哪里,甚至不知道如何在grid view中使用它 public string convertingtolocalnumerics(string EnglishValue,string Locale) { string[]numerics=System.Globalization.CultureInfo.CreateSpecificCu
我找到了这段代码,但我不知道把它放在哪里,甚至不知道如何在grid view中使用它
public string convertingtolocalnumerics(string EnglishValue,string Locale)
{
string[]numerics=System.Globalization.CultureInfo.CreateSpecificCulture(Locale.NumberFormat.nativeDigits;
字符串LocalisedValue=英语值;
for(int n=0;n
有两种方法。一个是可以创建模板字段而不是绑定字段,另一个是可以在rowDataBound方法上创建模板字段
这是模板字段的代码
<asp:TemplateField HeaderText="التاريخ">
<ItemTemplate>
<%#ConvertIntoLocalNumerals(Eval("stat_date").ToString(),"ar-sa") %>
</ItemTemplate>
</asp:TemplateField>
更新
您可以本地化DateTime对象而不是字符串,下面是helper方法
public string ConvertIntoLocaleDate(DateTime SourceValue, string Locale,string format)
{
var cultureInfo = CultureInfo.CreateSpecificCulture(Locale);
cultureInfo.DateTimeFormat.Calendar = new GregorianCalendar();
string formattedDate = SourceValue.ToString(format, cultureInfo);
string[] numerals = cultureInfo.NumberFormat.NativeDigits;
for (int n = 0; n < numerals.Length; n++)
{
formattedDate = formattedDate.Replace(n.ToString(), numerals[n]);
}
return formattedDate;
}
在英语中,所有国会大厦的信件看起来都像是你在大喊大叫。请不要这样做。请不要大声喊叫-并在格式化代码方面投入更多的精力。目前它是一个完全混乱的地方。你可以把代码放在很多地方,比如在将数据源分配到网格格式的字段之前,或者在行绑定格式的值中。我把它放在aspx中,但它返回错误UTF8Encoding()找不到,但当我试图在htm中的boundfield之前将其放入html时,lit给了我很多错误。公共字符串转换为LocalNumerics(string EnglishValue,string Locale){string[]Numerics=System.Globalization.CultureInfo.CreateSpecificCulture(Locale).NumberFormat.nativedigits;string LocalisedValue=EnglishValue;for(int n=0;n
ConvertingToLocalNumerics
正在返回字符串,不是日期。谢谢你,但是你知道如何让它从右到左显示吗?而不是那样,我需要它像那样
<asp:TemplateField HeaderText="التاريخ">
<ItemTemplate>
<%#ConvertIntoLocalNumerals(Eval("stat_date").ToString(),"ar-sa") %>
</ItemTemplate>
</asp:TemplateField>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var arabicDate = ConvertIntoLocalNumerals(DataBinder.Eval(e.Row.DataItem, "start_date").ToString(),"ar-sa");
e.Row.Cells[0].Text = string.Format("{0:dd/MM/yyyy}", arabicDate);
}
}
public string ConvertIntoLocaleDate(DateTime SourceValue, string Locale,string format)
{
var cultureInfo = CultureInfo.CreateSpecificCulture(Locale);
cultureInfo.DateTimeFormat.Calendar = new GregorianCalendar();
string formattedDate = SourceValue.ToString(format, cultureInfo);
string[] numerals = cultureInfo.NumberFormat.NativeDigits;
for (int n = 0; n < numerals.Length; n++)
{
formattedDate = formattedDate.Replace(n.ToString(), numerals[n]);
}
return formattedDate;
}
e.Row.Cells[0].Text = ConvertIntoLocaleDate(Convert.ToDateTime(DataBinder.Eval(e.Row.DataItem, "start_date")), "ar-sa", "dd/MM/yyyy");