2009-12-13 2 views
0

Извините, если мой вопрос кажется простым.Как изменить направление BoundField в GridView

Прямо сейчас, в BoundField моего GridView, некоторые данные отображаются как «12/11/1381», которые я хочу показать как «1381/11/12» (в противоположном направлении).

Я знаю, что могу изменить направление через rtl и ltr в TemplateField. Но по какой-то причине я не могу преобразовать свое поле привязки к шаблону.

Я просмотрел все свойства BoundField, чтобы изменить направление, но ничего не нашел.

Я думаю, что это должно быть сделано в событии RowDataBound GridView, но я не знаю, как это сделать?

Что вы думаете об этом случае?
Спасибо заранее.

+0

Является ли "12/11/1381" дата просто любой текст? –

+0

Да. Это дата, но в строке. – Mostafa

ответ

1

Хорошо, так как это дата, которая была введена как строка, есть как минимум 2 способа сделать это.

Метод 1
DataBind строки в качестве объекта Date вместо String. Поскольку у меня сейчас нет точного формата даты исходной даты, dd/MM/yyyy или MM/dd/yyyy, вам придется самому разобраться.

Если вы можете сделать это, просто добавьте к этому элементу "BoundField":

DataFormatString="{0:yyyy/MM/dd}" 

или

DataFormatString="{0:yyyy/dd/MM}" 

Метод 2
Манипулирование текст в RowDataBound oevent. Я сделал грубую, здесь можно отполировать. Вероятно, вам следует манипулировать ими как Date объектов.

В ASPX:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
onrowdatabound="GridView1_RowDataBound"> 

CodeBehind:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType != DataControlRowType.DataRow) 
     return; 
    // assuming the date is at cell index 1 
    string[] arr = e.Row.Cells[1].Text.ToString().Split('/'); 
    e.Row.Cells[1].Text = string.Format("{0}/{1}/{2}", arr[2], arr[1], arr[0]); 
} 
+0

Спасибо. Это определенно работает в ситуации, когда у меня есть дата и время. Но есть и другие случаи, когда мое связанное поле находится в строковом типе данных, а не в datetime. Любое решение, кроме преобразования в поле шаблона для них? – Mostafa

+0

@Mostafa: Я не совсем понимаю ваш вопрос. Событие «RowDataBound» позволяет выполнять любую операцию строки, не обязательно иметь тип «Дата». –

+0

Вы правы. спасибо – Mostafa

0

Сначала убедитесь, что вы установили HtmlEncode="False"

попробуйте добавить это к BoundField тегу -

DataFormatString="{0:yyyy/MM/dd}" 

здесь хорошая статья, которая должна помочь вам - How To Set a Date Format In GridView