你能在数据绑定服务器控件中调用PadLeft吗?

时间:2009-12-01 16:47:01

标签: c# .net data-binding

假设我在gridview模板列中有一个标签,我将文本分配给数据绑定项“OrderID”。有什么方法我可以调用.ToString()。PadLeft(7,'0')?这是标签:

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

因为PadLeft需要一个char,所以我不能使用我的单引号,因为我已经用单引号包围了值,并且由于DataBinder.Eval表达式而无法使用双引号。还有另一种方法可以让我在一条线上工作吗?

1 个答案:

答案 0 :(得分:1)

你可以内联播放(我会留给其他人给你答案,因为我没有VS开放测试它。)

但我会通过在codebehind中添加一个方法来返回格式化的订单ID。或者甚至更好,将格式方法放在静态助手类中,以便任何需要格式化订单ID的页面都可以使用。

E.g。如果你绑定了一系列订单,比如:

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"]);      
}

然后您可以在标记中的任何位置使用一致的格式化订单ID:

'<%# MyFormattingHelper.GetFormattedOrderId(Container.DataItem) %>'