Форматирование DataBinder.Eval данных

Я просто добавляю это, чтобы быть точным:

Все остальные ответы относятся к модулям . Исходный вопрос явно упоминается __all__ в файлах __init__.py, поэтому речь идет о пакетах python .

Как правило, __all__ входит в игру только тогда, когда вариант from xxx import * оператора import. Это относится как к пакетам, так и к модулям.

Поведение для модулей объясняется в других ответах. Точное поведение для пакетов описано здесь здесь .

Короче говоря, __all__ на уровне пакета делает примерно то же самое, что и для модулей, за исключением того, что он имеет дело с модулей внутри пакета (в отличие от указания имен в модуле ). Таким образом, __all__ указывает все модули, которые должны быть загружены и импортированы в текущее пространство имен, когда мы используем from package import *.

Большая разница в том, что когда вы опускаете , декларация __all__ в пакете __init__.py, инструкция from package import * вообще ничего не импортирует (с исключениями, описанными в документации, см. ссылку выше).

С другой стороны, если вы опускаете __all__ в модуле, «избранный импорт» будет импортировать все имена (не начиная с подчеркивания), определенные в модуле.

29
задан bkaid 28 August 2011 в 05:50
поделиться

10 ответов

Существует необязательная перегрузка для DataBinder.Eval для предоставления форматирования:

<%# DataBinder.Eval(Container.DataItem, "expression"[, "format"]) %>

Параметр формата представляет собой строковое значение, использующее синтаксис замены заполнителя значения (называемый составным форматированием), например:

<asp:Label id="lblNewsDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "publishedDate", "{0:dddd d MMMM}") %>'</label>
57
ответ дан DOK 28 August 2011 в 05:50
поделиться

Вы можете использовать функцию в ретрансляторе, как вы сказали, но обратите внимание, что DataBinder.Eval возвращает объект, и вам нужно привести его к DateTime.

Вы также можете отформатировать поле в строке:

<%# ((DateTime)DataBinder.Eval(Container.DataItem,"publishedDate")).ToString("yyyy-MMM-dd") %>

Если вы используете ASP.NET 2.0 или новее, вы можете написать это следующим образом:

<%# ((DateTime)Eval("publishedDate")).ToString("yyyy-MMM-dd") %>

Другой вариант - привязать значение для метки в событии OnItemDataBound.

11
ответ дан dexter 28 August 2011 в 05:50
поделиться
<asp:Label ID="ServiceBeginDate" runat="server" Text='<%# (DataBinder.Eval(Container.DataItem, "ServiceBeginDate", "{0:yyyy}") == "0001") ? "" : DataBinder.Eval(Container.DataItem, "ServiceBeginDate", "{0:MM/dd/yyyy}") %>'>
</asp:Label>
0
ответ дан sth 28 August 2011 в 05:50
поделиться

Эта строка решила мою проблему:

<%#DateTime.Parse(Eval("DDDate").ToString()).ToString("dd-MM-yyyy")%>
3
ответ дан sth 28 August 2011 в 05:50
поделиться

Вы можете использовать его таким образом на странице aspx

<%# DataBinder.Eval(Container.DataItem, "DateColoumnName", "{0:dd-MMM-yyyy}") %>
0
ответ дан rcollyer 28 August 2011 в 05:50
поделиться

Почему бы не использовать более простой синтаксис?

<asp:Label id="lblNewsDate" runat="server" Text='<%# Eval("publishedDate", "{0:dddd d MMMM}") %>'</label>

Это шаблон управления "Eval", который принимает выражение и формат строки:

protected internal string Eval(
string expression,
string format

)

http://msdn.microsoft.com/en-us/library/3d2sz789.aspx

12
ответ дан Diego C. 28 August 2011 в 05:50
поделиться

Для форматирования даты с использованием локального формата даты используйте:

<%#((DateTime)Eval("ExpDate")).ToString("d")%>

Как отформатировать оператор Eval для отображения даты с использованием локали даты

2
ответ дан Christian Specht 28 August 2011 в 05:50
поделиться

После некоторых поисков в Интернете я обнаружил, что на самом деле очень возможно вызвать пользовательский метод, передавая значение DataBinder.Eval.

Пользовательский метод может быть записан в коде файла, но он должен быть объявлен public или protected . В моем вопросе выше я упоминал, что пытался написать собственный метод в коде, но получал ошибку во время выполнения. Причиной этого было то, что я объявил метод закрытым .

Итак, в заключение, хороший способ использования значения DataBinder.Eval для получения желаемого результата:

default.aspx

<asp:Label ID="lblNewsDate" runat="server" Text='<%# GetDateInHomepageFormat(DataBinder.Eval(Container.DataItem, "publishedDate")) )%>'></asp:Label>

default.aspx.cs code:

public partial class _Default : System.Web.UI.Page
{

    protected string GetDateInHomepageFormat(DateTime d)
    {

        string retValue = "";

        // Do all processing required and return value

        return retValue;
    }
}

Надеюсь, что это помогает другим.

14
ответ дан Nahom Tijnam 28 August 2011 в 05:50
поделиться

Text = '<% # DateTime.Parse (Eval ("LastLoginDate"). ToString ()). ToString ("MM / дд / гггг чч: мм тт")%>'

Это работает для формата, как вы хотите

1
ответ дан Devendra Patel 28 August 2011 в 05:50
поделиться

Спасибо всем. Я застрял в строках стандартного формата в течение некоторого времени. Я также использовал пользовательскую функцию в VB.

Разметка: -

<asp:Label ID="Label3" runat="server" text='<%# Formatlabel(DataBinder.Eval(Container.DataItem, "psWages1D")) %>'/>

Код позади: -

Public Function fLabel(ByVal tval) As String
   fLabel = tval.ToString("#,##0.00%;(#,##0.00%);Zero")
End Function
1
ответ дан gaz 28 August 2011 в 05:50
поделиться
Другие вопросы по тегам:

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