Когда я добавляю новую строку в таблицу, как я могу установить значение по умолчанию для всех десятичных столбцов в новой

#html #asp.net-core

Вопрос:

У меня есть несколько десятичных столбцов в строке, которые сгруппированы в классе emphrs. Но когда я добавляю новую строку внутри таблицы, как я могу установить 0,00 в качестве значения по умолчанию для всех столбцов, сгруппированных в классе emphrs

В моем классе модели EmpHrs.cs атрибут столбца

  public decimal SundayNetHrs { get; set; }
  public decimal MondayNetHrs { get; set; }
  public decimal TuesdayNetHrs { get; set; }
  public decimal WednesdayNetHrs { get; set; }
  public decimal ThursdayNetHrs { get; set; }
  public decimal FridayNetHrs { get; set; }
  public decimal SaturdayNetHrs { get; set; }
 

В Html EmpHrs у меня есть таблица со столбцом EmpHrs

 <tbody>
        <tr>
            <td>@Html.TextBoxFor(model => model.FromDate, new { @class = "form-control date-input" })</td>
            <td>@Html.TextBoxFor(model => model.ToDate, new { @class = "form-control date-input" })</td>
            <td>@Html.EditorFor(model => model.SundayNetHrs, new { htmlAttributes = new { type = "number", @class = "form-control  w-100 empHrs" } })</td>
            <td>@Html.EditorFor(model => model.MondayNetHrs, new { htmlAttributes = new { type = "number", @class = "form-control  w-100 empHrs" } })</td>
            <td>@Html.EditorFor(model => model.TuesdayNetHrs, new { htmlAttributes = new { type = "number", @class = "form-control  w-100 empHrs" } })</td>
            <td>@Html.EditorFor(model => model.WednesdayNetHrs, new { htmlAttributes = new { type = "number", @class = "form-control  w-100 empHrs" } })</td>

       </tr>
     </tbody>
  <button type="button" id="btnUpdate" name="submitButton" value="DeleteAtt"
                 class="btn btn-primary form-control" onclick="AddNew();">
                 <i class="fa fa-save"></i><span class="padding-left-ten">Add New Row</span>
 </button>

 function AddNew() {
        var clone = $("#tblEntry tr:last").clone().find('input').val('').end().insertAfter("#tblEntry tr:last");
        $(clone).find(".date-input").datepicker({ format: 'dd/mm/yyyy', todayHighlight: true, date: new Date(), autoclose: true, todayBtn: 'linked' });
       // Here  All column under EmpHrs class should be set default value 0.00
    } 

Ответ №1:

Вы могли бы попробовать следующий способ:

Модель:

 public class EmpHrs
    {
        [DataType(DataType.Date, ErrorMessage = "Date only")]
        [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
        public DateTime FromDate { get; set; }

        [DataType(DataType.Date, ErrorMessage = "Date only")]
        [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
        public DateTime ToDate { get; set; }
        public decimal SundayNetHrs { get; set; }
        public decimal MondayNetHrs { get; set; }
        public decimal TuesdayNetHrs { get; set; }
        public decimal WednesdayNetHrs { get; set; }
        public decimal ThursdayNetHrs { get; set; }
        public decimal FridayNetHrs { get; set; }
        public decimal SaturdayNetHrs { get; set; }
    }
 

Контроллер:

  public IActionResult SetDefaultValue()
        {
     
            var empHrs=    new EmpHrs() { SundayNetHrs = 10, MondayNetHrs = 10, TuesdayNetHrs = 2, WednesdayNetHrs = 2, ThursdayNetHrs = 3, FridayNetHrs = 5, SaturdayNetHrs = 9 };
            return View(empHrs);
        }
 

Примечание: Я привязываю некоторое значение по умолчанию при загрузке. Если вы можете пропустить его, если потребуется. По щелчку мыши мы также установим значение по умолчанию, используя javascript
его в следующей части.

Вид:

 @model EmpHrs
@{
    ViewData["Title"] = "SetDefaultValue";
}
<table id="tblEntry" class="table table-striped">
    <thead>
        <tr>
            <th>Date From</th>
            <th>Date To</th>
            <th>SundayNetHrs</th>
            <th>MondayNetHrs</th>
            <th>TuesdayNetHrs</th>
            <th>WednesdayNetHrs</th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>@Html.EditorFor(model => model.FromDate, new { @id = "FromDate", htmlAttributes = new { @class = "form-control datepicker w-100" } })</td>
            <td>@Html.EditorFor(model => model.ToDate, new { @id = "ToDate", htmlAttributes = new { @class = "form-control datepicker w-100" } })</td>
            <td>@Html.EditorFor(model => model.SundayNetHrs, new {@id = "SundayNetHrs", htmlAttributes = new { type = "number", @class = "form-control  w-100 empHrs" } })</td>
            <td>@Html.EditorFor(model => model.MondayNetHrs, new { @id = "MondayNetHrs", htmlAttributes = new { type = "number", @class = "form-control  w-100 empHrs" } })</td>
            <td>@Html.EditorFor(model => model.TuesdayNetHrs, new { @id = "TuesdayNetHrs", htmlAttributes = new { type = "number", @class = "form-control  w-100 empHrs" } })</td>
            <td>@Html.EditorFor(model => model.WednesdayNetHrs, new { @id = "WednesdayNetHrs", htmlAttributes = new { type = "number", @class = "form-control  w-100 empHrs" } })</td>

        </tr>
    </tbody>
</table> <div class="row padding-top-ten center-block">
    <div class="col-md-4">
    </div>
    <div class="col-md-6">
        <div class="col-sm-4">
            <button type="button" id="btnUpdate" name="submitButton" value="DeleteAtt"
                    class="btn btn-primary form-control" onclick="AddNew();">
                <i class="fa fa-save"></i><span class="padding-left-ten">Add New Row</span>
            </button>
        </div>
    </div>
</div>
 

Скрипт:

 <script>
    function AddNew() {
       // alert("Click");
        var newRow = $("#tblEntry tbody tr").first().clone();
        var row = $("tbody").append(newRow);
        //Set Default value while adding new rows
         var defaultValue = 0;
   
    $("tbody tr:last-of-type td").find("input[id*='SundayNetHrs']").val(defaultValue.toFixed(2));
    $("tbody tr:last-of-type td").find("input[id*='MondayNetHrs']").val(defaultValue.toFixed(2));
    $("tbody tr:last-of-type td").find("input[id*='TuesdayNetHrs']").val(defaultValue.toFixed(2));
    $("tbody tr:last-of-type td").find("input[id*='WednesdayNetHrs']").val(defaultValue.toFixed(2));
      
       
    }
</script>
 

Примечание: Посмотрите на tbody tr:last-of-type td селектор, здесь я нахожу каждый inputbox и присваиваю ему значение. Поэтому просто найдите
ожидаемый элемент ввода и назначьте значение, используя defaultValue toFixed javascript метод with для настройки десятичного делителя.

Выход:

введите описание изображения здесь

Надеюсь, это решит вашу проблему.

Ответ №2:

Используйте конкретное значение:

   public decimal SundayNetHrs { get; set; }=0.00;
  public decimal MondayNetHrs { get; set; }=0.00;
  public decimal TuesdayNetHrs { get; set; }=0.00;
  public decimal WednesdayNetHrs { get; set; }=0.00;
  public decimal ThursdayNetHrs { get; set; }=0.00;
  public decimal FridayNetHrs { get; set; }=0.00;
  public decimal SaturdayNetHrs { get; set; }=0.00;