Home > Software engineering >  Label return zero value
Label return zero value

Time:11-30

I have the following code in ASP.NET but when run the code it returns me 0 value in label lblassest.Text. can anyone tell me where is the problem?

C# Code :

if (reader.Read())
            {
                decimal price;
                decimal.TryParse(lblcurrentbtc.Text, out price);
                decimal pr_charges = reader["WallBalan"] == 
                DBNull.Value ? 0 : Convert.ToDecimal(reader["WallBalan"]);
                lblamount.Text = pr_charges.ToString();
                lblassest.Text = ((Convert.ToDecimal(reader["WallBalan"]) * price)).ToString();
                reader.Close();
            }

ASP (Frontend) :

<asp:Label class="text-dark float-right font-weight-medium" id="lblcurrentbtc" runat="server"></asp:Label>
<asp:Label class="text-dark mb-1 font-weight-medium" runat="server" ID="lblassest"></asp:Label>

Javascript :

var baseUrl = "https://api.coinranking.com/v2/coins"
var proxyUrl = "https://cors-anywhere.herokuapp.com/"
var apiKey = "coinranking"


fetch(`${proxyUrl}${baseUrl}`, {
method: "GET",
headers: {
    'Content-Type': 'application/json',
    'x-access-token': `${apiKey}`,
    'Access-Control-Allow-Origin': '*'
}
}).then((response) => {
if (response.ok) {
    response.json().then((json) => {
        console.log(json.data.coins)

        let coinsData = json.data.coins

        if (coinsData.lenght > 0) {
            var cryptoCoins = "";
        }

        coinsData.forEach((coin) => {
            cryptoCoins  = "<tr>"
            cryptoCoins  = `<td> ${coin.uuid} </td>`;
            cryptoCoins  = `<td> ${coin.btcPrice} </td>`;
            cryptoCoins  = `<td> ${coin.rank} </td>`;
            cryptoCoins  = `<td> ${coin.tier} </td>`;
            cryptoCoins  = `<td> ${coin.name} </td>`;
            cryptoCoins  = `<td> ${coin.price} </td>`;
            cryptoCoins  = `<td> ${coin.symbol} </td>`; "<tr>";
        })
        document.getElementById("data").innerHTML = cryptoCoins


        document.getElementById('lblcurrentbtc').innerHTML = "";
        var myTab = document.getElementById('table1');
        var objCells = myTab.rows.item(1).cells;
        lblcurrentbtc.innerHTML = lblcurrentbtc.innerHTML   ' '   
    objCells.item(5).innerHTML;
    })
   }
  }).catch((error) => {
   console.log(error)
  })

Please note that the lblcurrentbtc.Text have value like 54897.56062971018 .

Thx for your helps

CodePudding user response:

You are using decimal.TryParse() correctly. If the value of price is 0 after calling it then either the contents of your llblcurrentbtc.Text is 0, something that isn't a number or null/empty string.

It's also possible that the TryParse line is never reached.

Try setting a breakpoint in your if statement to verify the string value (lblcurrentbtc.Text) is as you expect. Your lblcurrentbtc.Text may be null or empty string at the point this code runs - the code that assigns a value may happen later.

CodePudding user response:

If I write this code:

var lblcurrentbtc = new Label();
var lblamount = new Label();
var lblassest = new Label();
var reader = new Dictionary<string, object>();

reader["WallBalan"] = 2m;
lblcurrentbtc.Text = 54897.56062971018m.ToString();

Then I run your code verbatim after it:

decimal price;
decimal.TryParse(lblcurrentbtc.Text, out price);

decimal pr_charges = reader["WallBalan"] == DBNull.Value ? 0 : Convert.ToDecimal(reader["WallBalan"]);
lblamount.Text = pr_charges.ToString();

lblassest.Text = ((Convert.ToDecimal(reader["WallBalan"]) * price)).ToString();

The value of lblamount.Text & lblassest.Text are 2 & 109795.12125942036, respectively.

Your code is working fine as it is. Your issue is that lblcurrentbtc.Text doesn't contain the value that you think it does.

  • Related