В ASP.NET, как я могу вызвать формат дат в DropDownList к “DD/MM/YYYY”?

документация повышения для связывает , предполагает, что можно использовать повышение:: касательно и повышение:: cref для этого.

6
задан Bastien Vandamme 31 October 2009 в 14:09
поделиться

7 ответов

Я бы заключил DateTime в другой объект и переопределил ToString (), поскольку это то, что отображается в раскрывающемся списке.

class MyDateTime {
    public MyDateTime(DateTime dt) {
        _dt = dt;
    }
    public override String ToString() {
        return _dt.ToString("dd/MM/yyyy");
    }
    private DateTime _dt;
}

Основное преимущество этого заключается в том, что вы можете хранить другую информацию, а не просто строку, для ссылки на другие объекты или данные. Если достаточно простой строки, это излишне.

Если наличие '/' важно для вас во всех локали (языках), вы должны цитировать его, иначе вы можете получить другой символ в некоторых местоположениях.

] См. http://www.color-of-code.de/index.php?option=com_content&view=article&id=58:c-format-strings&catid=38:programming&Itemid=66 для некоторых примеров (мой список читов с ошибками, с которыми я столкнулся).

Код необходимо немного изменить:

DateTime date = DateTime.Now;
List<MyDateTime> dates = new List<MyDateTime>();

for (int i = 0; i < HISTORY_LENGTH; i++)
{
    dates.Add(new MyDateTime(date.AddDays(-i)));
}

DropDownList.DataSource = dates;
DropDownList.DataBind();
1
ответ дан 8 December 2019 в 03:01
поделиться

Все, что вам нужно сделать, это установить DropDownList.DataTextFormatString - тогда после DataBinding ваш элемент управления применит правильный формат:

<asp:DropDownList
    id="yourList"
    runat="server"
    dataTextFormatString="{0:dd/MM/yyyy}"/>
23
ответ дан 8 December 2019 в 03:01
поделиться

Вместо форматирования источника данных вы также можете установить формат даты как:

DropDownList.DataTextFormatString = "{0:dd/MM/yyyy}";
4
ответ дан 8 December 2019 в 03:01
поделиться

Отформатируйте даты в списке таким образом, прежде чем связывать данные для управления.

2
ответ дан 8 December 2019 в 03:01
поделиться

Если вы хотите использовать синтаксический анализатор (в данном случае lepl), но по-прежнему хотите получать промежуточные результаты, а не окончательный проанализированный список, то я думаю, что это именно то, что вы искали :

>>> nested = Delayed()
>>> nested += "{" + (nested[1:,...]|Any()) + "}"
>>> split = (Drop("{") & (nested[:,...]|Any()) & Drop("}"))[:].parse
>>> split("{{a}{b}{{{c}}}}")
['{a}{b}{{{c}}}']
>>> split("{a}{b}{{{c}}}")
['a', 'b', '{{c}}']
>>> split("{{c}}")
['{c}']
>>> split("{c}")
['c']

Сначала это может показаться непрозрачным, но на самом деле это довольно просто: o)

nested - это рекурсивное определение сопоставления для вложенных скобок ("+" и [...] в определении сохраните все как одну строку после того, как она будет сопоставлена). Затем split говорит, что соответствует как можно большему количеству ("[:]") чего-то, что окружено "{" ... "}" (которое мы отбрасываем с помощью "Drop") и содержит либо вложенный выражение или любую букву.

И, наконец, вот lepl-версия слова «все в одном»

1
ответ дан 8 December 2019 в 03:01
поделиться

Просто добавьте элементы в Коллекция DropDownList.Items вместо того, чтобы полагаться на DataBind ():

DateTime date = DateTime.Now;

for (int i = 0; i < HISTORY_LENGTH; i++)
{
    DropDownList.Items.Add(new ListItem(date.AddDays(-i).ToString("dd/MM/yyyy"), date.AddDays(-i)))
}
0
ответ дан 8 December 2019 в 03:01
поделиться

Если это что-то, что вам нужно сделать во всем приложении, вам нужно посмотреть на объект CultureInfo.

Вы можете получить текущий объект CultureInfo, вызвав

var culture = CultureInfo.CurrentCulture;

Объект CultureInfo имеет свойство под названием DateTimeFormat , которое, в свою очередь, имеет свойство под названием ShortDatePattern , которое вы должны установить так ...

culture.DateTimeFormatInfo.ShortDatePattern = "dd/MM/yyyy";

Теперь вы можете использовать это где угодно, форматируя строка выглядит так ...

String.Format("{d}", someDateTime);
0
ответ дан 8 December 2019 в 03:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: