Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp:BoundField中将日期和数字从英语翻译为阿拉伯语_C#_Asp.net_Gridview - Fatal编程技术网

C# 如何在asp:BoundField中将日期和数字从英语翻译为阿拉伯语

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

这是我的HTML。我希望DataGridView中的日期是阿拉伯文的,我希望详细的解决方案,因为我是asp.net的初学者


我找到了这段代码,但我不知道把它放在哪里,甚至不知道如何在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;nConvertingToLocalNumerics正在返回字符串,不是日期。谢谢你,但是你知道如何让它从右到左显示吗?而不是那样,我需要它像那样
<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");