PrimeNG表:编辑模式无法正常工作-编辑字段为空

问题描述

当我单击一个单元格时,编辑模式开始,但文本框为空。

enter image description here

代码

import java.util.Arrays;

class Main {
  public static void main(String[] args) {
    Main m = new Main();
    m.runcode();
  }

  public void runcode()
  {
    Calculator calc = new Calculator();

    calc.makeList(20);

    System.out.println("List:");
    calc.showList();

    System.out.println("Max is: " + calc.max());
    System.out.println("Min is: " + calc.min());
    System.out.println("Sum is: " + calc.sum());
  System.out.println("Ave is: " + calc.average());
  System.out.println("There are " + calc.fiftyLess() + " values in the list that are less than 50");
  System.out.println("Even numbers: " + calc.Even());
  }
}

class Calculator {

  int list[] = new int[20];

  public void makeList(int listSize)
  {
    for (int count = 0; count < list.length; count++) {
      list[count] = (int) (Math.random() * 100);
    }
  }

  public void showList()
  {
    for (int count = 0; count < list.length; count++) 
    {
      System.out.print(list[count] + " ");
    }
  }

public int max()
{
  int max = list[0];
  for (int count=0; count<list.length; count++){
     if (list[count] > max) {
        max = list[count];
     }
  }
  return max;
}

public int min()
{
  int min = list[0];
  for (int count=0; count<list.length; count++){
     if (list[count] < min) {
       min = list[count];
     }
  }
  return min;
 }

 public int sum()
 {
   int sum = 0;
   for (int count=0; count<list.length; count++){
     sum = sum + list[count];
   }
   return sum;
 }

 public double average()
 {
   int sum = sum();
   double average = sum / list.length;
   return average;
 }

 public int fiftyLess()
 {
   int lessthan = 0;
   for (int count =0; count<list.length;count++)
   {
     if (list[count] < 50)
     {
       lessthan++;
     }

   }

   return lessthan;

    

 }

 public int Even()
 {
   int isEven = 0;

   for (int count = 0; count<list.length;count++)
   {
     if (list[count] % 2 == 0)
     {
       isEven++;

     }
   }

   return isEven;
 }

 public int Gap()
 {

  int a = 0;
  int b = 0;
  int gap = math.abs(a - b);
   for (int count = 1; count<list.length;count++)
   {
     if (list[count] != list[count] + 1)
     {
      a =list[count];


     }
   }
 }
}

当我将[[ngModel)]更改为[value]时,它将起作用。但是根据官方文档,我认为这不是要走的路。 https://www.primefaces.org/primeng/showcase/#/table/edit

这有效:

<p-table  #dt [columns]="_gridDeFinitions" [value]="_appointmentGridDataSource"
         [loading]="loading"
         sortMode="multiple"
         selectionMode="multiple" [(selection)]="_selectedAppointments" [MetaKeySelection]="true" dataKey="AppointmentId"
         (onRowSelect)="onRowSelect($event)" (onRowUnselect)="onRowUnselect($event)"
         styleClass="p-datatable-sm p-datatable-gridlines"
         [autoLayout]="true">
  <ng-template pTemplate="caption">
    <div class="p-d-flex p-ai-center p-jc-between">
      Terminübersicht
    </div>
  </ng-template>
  <ng-template pTemplate="header" let-columns>
    <tr>
      <th *ngFor="let gridDeFinition of columns" pSortableColumn="{{gridDeFinition.PropertyBinding}}">
        {{gridDeFinition.HeaderLabel}} <p-sortIcon field="{{gridDeFinition.PropertyBinding}}"></p-sortIcon>
      </th>
    </tr>
    <tr>
      <th *ngFor="let gridDeFinition of columns" pSortableColumn="{{gridDeFinition.PropertyBinding}}">
        <p-calendar (click)="clickOnFilter($event)" (onSelect)="onDateSelect($event)" (onClearClick)="dt.filter('','Date','equals')"
                    [showbuttonbar]="true" styleClass="p-column-filter" placeholder="Registration Date" [readonlyInput]="true" dateFormat="dd.mm.yyyy"
                    *ngIf="gridDeFinition.FormatAsDate === true"></p-calendar>
        <input pInputText type="text" (click)="clickOnFilter($event)" placeholder="Search by Name" class="p-column-filter"
               (input)="dt.filter($event.target.value,'RemarkInternal','contains')"
               *ngIf="gridDeFinition.FormatAsDate === false && gridDeFinition.HeaderLabel != 'KW' ">

        <p-multiSelect (click)="clickOnFilter($event)" [options]="weekDays" placeholder="All" styleClass="p-column-filter" optionLabel="label"
                (onChange)="onWeekDayChange($event)"
                *ngIf="gridDeFinition.FormatAsDate === false && gridDeFinition.HeaderLabel === 'KW' "></p-multiSelect>
      </th>
    </tr>
  </ng-template>
  <ng-template pTemplate="body" let-appointment let-columns="columns">
    <tr [pSelectableRow]="appointment">

      <td *ngFor="let gridDeFinition of columns" [ngStyle]="{'text-align': gridDeFinition.Center === true ? 'center' : 'left' }" pEditableColumn>

        <span *ngIf="gridDeFinition.FormatAsDate === true && gridDeFinition.Editable === false">{{appointment[gridDeFinition.PropertyBinding] | date: 'dd.MM.yyyy'}}</span>
        <span *ngIf="gridDeFinition.FormatAsDate === false && gridDeFinition.Editable === false">{{appointment[gridDeFinition.PropertyBinding]}}</span>

        <p-cellEditor *ngIf="gridDeFinition.Editable === true">
          <ng-template pTemplate="input">
            <input pInputText type="text"  [(ngModel)]="appointment[gridDeFinition.PropertyBinding]">
          </ng-template>
          <ng-template pTemplate="output">
            {{appointment[gridDeFinition.PropertyBinding]}}
          </ng-template>
        </p-cellEditor>

      </td>
    </tr>
  </ng-template>
</p-table>

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)