2015-09-07 41 views
0

我在SQL Server表薪酬領域用金錢型,在GridView ItemTemplate中我使用:格式ItemTemplate GridView錢項目到千位分隔符ASP.NET?

<asp:TemplateColumn ItemStyle-CssClass="Text"> 
    <HeaderTemplate>Basic Salary</HeaderTemplate> 
     <ItemTemplate> 
      <%# DataBinder.Eval(Container, "DataItem.BasicSalary", "{0:0,0}")%> 
     </ItemTemplate> 
    <HeaderStyle HorizontalAlign="Center"></HeaderStyle> 
</asp:TemplateColumn> 

但它只顯示:6500000.0000這一翻譯我的期望之一是:6500000。那麼該怎麼辦?請幫忙! 如果我用這個功用:

protected string Format_Number(string Number) 
{ 
    Number = Number.Replace(".", ""); 
    Number = Number.Replace(",", ""); 
    var tmp = ""; 
    while (Number.Length > 3) 
    { 
     tmp = "." + Number.Substring(Number.Length - 3) + tmp; 
     Number = Number.Substring(0, Number.Length - 3); 
    } 
    tmp = Number + tmp; 
    return tmp; 
} 

然後在ItemTemplate:

<ItemTemplate> 
    <asp:label ID="lblSalary" 
       runat="server" 
       Text='<%# Format_Number(DataBinder.Eval(Container.DataItem, "Salary").ToString()) %>'> 
    </asp:label> 

輸出爲: 6.500.000.000我要開孔的最後3位。怎麼做?

+0

你的格式是正確的我猜你的數據綁定是一種字符串類型。這就是爲什麼你的格式不起作用。 – Nic

回答

1

反正..你把它轉換成十進制然後重新格式化它應該工作

protected string Format_Number(string Number) 
{ 
    // Variable 
    string value = string.Empty; 
    decimal castValue = 0; 
    bool isValid = false; 

    // Check 
    if (Number != string.Empty) 
    { 
     // Parse 
     isValid = decimal.TryParse(Number, out castValue); 

     // Check & Set Decimal Valud 
     if (isValid) value = castValue.ToString("0,0"); 
    } 


    return value; 
} 
+0

我將貨幣類型轉換爲SQL表中的十進制並使用此函數。它完美的工作!謝謝!小數或金錢類型也都有效。 – user3035133

+1

如果你在SQL中轉換類型,你根本不需要這個函數.... 在你的Eval中只需要格式化爲{0:0,0}應該可以工作 – Nic

+0

使用這個函數可以工作,但是使用Eval和{0:0,0}不起作用!<%#DataBinder.Eval(Container,「DataItem.BasicSalary」,「{0:0,0}」)%> – user3035133

0

既然它是一個字符串,爲什麼不簡單地使用子字符串呢?

只是想:

return tmp.Substring(0, tmp.Length - 4); 

+0

當字符串只有65時會發生什麼? – Mathemats

+0

如果我們使用return tmp.Substring(tmp.Length - 4);輸出是000 – user3035133

+0

@你應該首先檢查的數學,這是真的。 – Stefan

0

可能是你可以試試這個

salary = salary.Replace(".", ""); 
salary = salary.Replace(",", ""); 
string tmp = (Convert.ToInt64(salary)).ToString("N", new CultureInfo("en-US")); 
0

您不使用任何函數「Format_Number(string Number)」。直接綁定爲金錢數據類型。這對我來說很有用。

<asp:TemplateField HeaderText="Basic Salary"> 
       <HeaderTemplate>Basic Salary</HeaderTemplate> 
       <ItemTemplate> 
        <%# DataBinder.Eval(Container, "DataItem.BasicSalary", {0:0}")%> 
       </ItemTemplate> 
       <HeaderStyle HorizontalAlign="Center"></HeaderStyle> 
      </asp:TemplateField>