Как изменить формат отображения DateTime, чтобы использовать мою функцию? - PullRequest
1 голос
/ 15 августа 2011

Я использую сервер Microsoft SQL для сохранения и получения DateTime.Но в нашей культуре пользователи используют персидское время.Поэтому я написал метод расширения ToPersianDateString(this DateTime dt) для отображения пользователям правильной персидской даты вместо григорианской даты.

Проблема возникает, когда DataGridView хочет отобразить данные или после того, как пользователь отредактировал значение персидской даты.Есть ли способ указать DataGridView для вызова моей функции для столбцов даты и времени и после того, как пользователь редактирует столбец даты и времени, преобразует его в григорианское время даты?

У меня также есть статическая функция для преобразования в григорианскую дату:

static DateTime ToGregorianDate(string persianDate);

Я использую Linq to SQL в качестве ORM, и мой пример формы выглядит следующим образом:

public class PeopleForm : Form
{
    DataContext context = new DataContext();

    public PeopleForm()
    {
        InitializeComponents();
        datagridview1.DataSource = context.People;
    }

    private void btnSave_Click(...)
    {
        try{
            context.SubmitChanges();
        }
        catch
        {
            MessageBox.Show(...);
        }
    }

}

1 Ответ

1 голос
/ 15 августа 2011

Вы пробовали использовать DataGridView.CellFormatting Событие?

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    // Check if it's Persian Date Column
    if (this.dataGridView1.Columns[e.ColumnIndex].Name == "PersianDate") //PersianDate == Your Date Column Name
    {
        if (e.Value != null)
        {
             e.Value = ToGregorianDate(e.Value);

        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...