2014-02-07 29 views
1

我在數據集中有一列AMOUNT_PAISE。我從來自sql server存儲過程的結果集中綁定這個數據集。對於數據庫貨幣中的AMOUNT_PAISE列是paise(可以說888 paise爲特定行),但我想以盧比顯示此金額(盧比等同於888 paise爲8.88)。但是我不能直接分配它,因爲數據集包含int64值。當我將小數888轉換爲int64時,它給出9(888/100 = 8.88,當轉換爲int64時,它給出9) 所以請告訴我現在應該嘗試什麼。如何在C#中的數據集中設置十進制值?

配方可以從paise轉換爲rupee。

rupee = paise/ 100; //upto 2 decimal points 

if (dsTransactionLogs.Tables.Count > 0) 
{ 
    if (dsTransactionLogs.Tables[0].Rows.Count > 0) 
    { 

     //Code to convert amount from Paise to Rs. 
     int i = 0; 
     foreach (DataRow row in dsTransactionLogs.Tables[0].Rows) 
     { 
      decimal decimalAmountInPaise = Convert.ToDecimal(dsTransactionLogs.Tables[0].Rows[i]["AMOUNT_PAISE"]); 
      decimalAmountInPaise = Math.Round(decimalAmountInPaise/100, 2); 
      //Int64 int64AmountInPaise = Convert.ToInt64(decimalAmountInPaise); 
      string strAmount = decimalAmountInPaise.ToString("#.##"); 
      dsTransactionLogs.Tables[0].Rows[i]["AMOUNT_PAISE"] = Convert.ToInt64(strAmount); 
      i++; 

     } 

     GridViewTRANSACTIONDETAILS.DataSource = dsTransactionLogs; 
     GridViewTRANSACTIONDETAILS.DataBind(); 
     transactionGVDiv.Style.Add("height", "400px"); 
     //LabelNoTransactionLogsID.Visible = false; 
    } 
    else 
    { 
     //LabelNoTransactionLogsID.Visible = true; 
    } 
} 

這是gridview中此列的aspx代碼。

<asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderText="Amount"> 
<ItemTemplate> 
    <asp:Label runat="server" ID="AmountLbl" NavigateUrl="#" Text='<%#Eval("AMOUNT_PAISE") %>'> ></asp:Label> 
</ItemTemplate> 
</asp:TemplateField> 

回答

0

我建議顯示時,而不是試圖修改數據表,你做轉換。即更換:

... Text='<%#Eval("AMOUNT_PAISE") %>'> ... 

通過類似:

... Text='<%# (Convert.ToDecimal(Eval("AMOUNT_PAISE"))/100M).ToString("N2") %>'> ... 
+0

獲取exeption指定的轉換無效 – user3264676

+0

嘗試Convert.ToDecimal而不是轉換 - 請參閱更新。它可能也會通過首先投射十進制 - 「(十進制)(long)Eval(...)」 – Joe

+0

在GridView中它不顯示正確的值。 但是,當我在編寫它的工作正常。 十進制decimalValue = 888; string tempStr =(Convert.ToDecimal(decimalValue)/ 100).ToString(「N2」); – user3264676

0

只是改變你行:

dsTransactionLogs.Tables[0].Rows[i]["AMOUNT_PAISE"] = Convert.ToInt64(strAmount); 

dsTransactionLogs.Tables[0].Rows[i]["AMOUNT_PAISE"] = strAmount; 
+0

這不會工作的人 – user3264676

+0

@ user3264676,你試過嗎? – Arshad

相關問題