New to Telerik UI for ASP.NET CoreStart a free 30-day trial

Formatting ProgressBar Value

Environment

ProductTelerik UI for ASP.NET Core ProgressBar
Progress Telerik UI for ASP.NET Core versionCreated with the 2024.2.514 version

Description

How can I format the current value of the ProgressBar that is displayed into a Grid column?

By design, the underlying value of the ProgressBar must be a number. In some cases, the value must be formatted. For example, when the number groups must be comma-separated to match the current culture.

Solution

Follow the steps below to initialize a ProgressBar into a specified Grid column and format its value based on the French (fr-FR) culture:

  1. Add the ProgressBar element through the ClientTemplate() option of the Grid's column.
Razor
  columns.Bound(p => p.Freight).ClientTemplate("<div class='progress'></div>");
  1. Handle the DataBound event of the Grid, select the div elements with class progress and initialize the ProgressBar component in each column cell.
Razor
  @(Html.Kendo().Grid<OrderViewModel>()
    .Name("grid")
    .Events(ev => ev.DataBound("onDataBound"))
    ...// Other configuration.
  )
  1. Within the DataBound event handler, select the k-progressbar elements, and access the respective ProgressBar value through the k-progressbar-status element. Use the kendo.parseFloat() and kendo.toString() methods to format the value and update it with jQuery.
Html
  <script>
    function onDataBound(e) {
      var grid = this;
      grid.tbody.find(".progress").each(function (e) {
          ... 
      });

      $.each($(".k-progressbar"), function(){
        let currentValue = $(this).find(".k-progress-status").text();
        $(this).find(".k-progress-status").text(kendo.toString(kendo.parseFloat(currentValue), 'n2', 'fr-FR'));
      });
    }
  </script>

For a runnable example based on the code above, refer to the following REPL samples:

More ASP.NET Core ProgressBar Resources

See Also