Динамическая таблица в Dart: td-файлы tbody не совпадают с td-файлами ad

#html #css #dart

#HTML #css #dart

Вопрос:

Предыстория: я работаю в Dart, создаю приложение как на стороне клиента, так и на стороне сервера; это приложение взаимодействует с базой данных MongoDB, загружая / загружая данные для заполнения некоторых элементов HTML.

У меня есть таблица внутри div (для отображения и скрытия ее в некоторых событиях).

HTML

 <div id="divShowTable">
    <table id="tabShow">

      <thead id="theadShow">     
      </thead>

      <tbody id="tbodyShow">
      </tbody>

    </table>

  <button id="btnBack">Back</button>
  <button id="btnNew">New record</button>

</div>
  

У меня есть код Dart <thead> , который заполняет ключами полей коллекции MongoDB (выбирается динамически, зависит от нужной вам коллекции).

 void fillTable(List<Map> lista) {
  Map m = new Map();
  m = lista[0];
  List<String> lk = new List<String>();
  lk = m.keys;

  /* Delete old titles */  
  tabellaShow.tHead.innerHtml = '';
  TableRowElement trh = tabellaShow.tHead.addRow();
  for (int k = 1; k < lk.length; k  ) {
      TableCellElement tch = trh.addCell();
      tch.innerHtml=lk.elementAt(k);
    }

  /* Delete old td's */
  tabellaShow.tBodies[0].innerHtml = '';

  for (int k = 0; k < lista.length; k  ) {
    m = new Map();
    m = lista[k];

    TableRowElement tr = tabellaShow.tBodies[0].addRow();
    tr.id = 'rigaShow';
    for (int j = 1; j < lk.length; j  ) {
      TableCellElement tc = tr.addCell();

      if (m[lk.elementAt(j)] != null amp;amp; m[lk.elementAt(j)] != 'null')
        tc.innerHtml = m[lk.elementAt(j)]; else tc.innerHtml = '';
    }
  }
}
  

Да, у меня есть TableElement , ошибок нет.
Для циклов, начинающихся с 1, чтобы игнорировать _id поле, автоматически установленное MongoDB.
Этот код, в зависимости от List<Map> того, что вы даете, динамически обновляет и отображает таблицу, связанную с этим списком.

У меня есть 4 возможности:

1) Показать таблицу с 10 полями.

2) Показать таблицу с 3 полями.

3) Показать таблицу с 2 полями.

4) Покажите таблицу с 1 полем.

Я установил ширину для td (для ad и tbody) в 100 пикселей, а для последнего дочернего элемента ad — в 116 пикселей (из-за нужной мне полосы прокрутки), но это не соблюдается.

Ну, для таблиц 2, 3, 4 все в порядке (визуально вы не видите, что td не выровнены), но таблица 1 выглядит очень и очень некрасиво, td идут туда, куда хотят, с нужной шириной.

Я попытался применить свойство width из Dart, из CSS, пробовал разные display значения, но ничего не работает.

Кто-нибудь знает, как это решить?

Комментарии:

1. Вам следует рассмотреть возможность использования polymer / angular и использовать модель, которая автоматически обновляет представление.

2. Таблица всегда будет выравнивать все свои TD, поэтому, возможно, что-то вставлено неправильно?

3. Я попробую посмотреть на polymer и angular, я пытаюсь делать все в обычном Dart. Невозможно, чтобы что-то было вставлено неправильно, иначе у меня были бы проблемы в других 3 таблицах.

4. Может быть, вы можете опубликовать полный пример или загрузить проект на github?

Ответ №1:

Проблема решена, удалив это в .css:

 #tbodyShow, theadShow tr{
  display:block;
}
  

Комментарии:

1. @Robert нашел решение. Тем не менее, спасибо за вашу помощь.