Можете ли вы вызвать PadLeft внутри серверного элемента управления с привязкой к данным? - PullRequest
0 голосов
/ 01 декабря 2009

Скажем, у меня есть метка внутри столбца шаблона вида сетки, и я назначаю текст для элемента с привязкой к данным, "OrderID". Есть ли способ, которым я могу вызвать .ToString (). PadLeft (7, '0')? Вот этикетка в том виде, в каком она стоит:

<asp:Label ID="lblOrderID" runat="server" Text='<%# "WW" +  DataBinder.Eval(Container.DataItem, "OrderID") %>' />

Поскольку PadLeft требует символ, я не могу использовать свои одинарные кавычки, потому что я уже заключил значение в одинарные кавычки и не могу сделать двойные кавычки из-за выражения DataBinder.Eval. Есть ли другой способ заставить это работать на одной линии?

1 Ответ

1 голос
/ 01 декабря 2009

Вы можете сделать это встроенным (я оставлю это кому-то другому, чтобы дать вам ответ, поскольку у меня нет открытой VS, чтобы проверить это).

Но я бы сделал это, добавив метод в коде для возврата отформатированного идентификатора заказа. Или, что еще лучше, поместите метод format в статический вспомогательный класс, чтобы он был доступен для любой страницы, которой требуется форматированный идентификатор заказа.

например. если вы привязываетесь к коллекции заказов, что-то вроде:

public static string GetFormattedOrderId(object dataItem)
{
    Order order = (Order) dataItem;
    return String.Format("WW{0:N7}", order.OrderId);      \
    // or return order.OrderId.ToString().PadLeft... if you prefer
}

или, если вы привязываетесь к DataTable, что-то вроде:

public static string GetFormattedOrderId(object dataItem)
{
    DataRow row = (DataRow) dataItem;
    return String.Format("WW{0:N7}", row["OrderId"]);      
}

тогда вы можете иметь последовательно отформатированный идентификатор заказа в любом месте вашей разметки:

'<%# MyFormattingHelper.GetFormattedOrderId(Container.DataItem) %>'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...