Как опубликовать ввод данных в DataTables? [Дубликат]

Если кто-то ищет Linq verson, это работает для меня:

public static IQueryable<BlockVersion> LatestVersionsPerBlock(this IQueryable<BlockVersion> blockVersions)
{
    var max_version_per_id = blockVersions.GroupBy(v => v.BlockId)
        .Select( v => new { BlockId = v.Key, MaxVersion = v.Max(x => x.Version) } );    

    return blockVersions.Where( v => max_version_per_id.Any(x => x.BlockId == v.BlockId && x.MaxVersion == v.Version) );
}
1
задан Gyrocode.com 15 July 2015 в 02:04
поделиться

1 ответ

ПРИЧИНА

При использовании плагина DataTables с разбиением на страницы в DOM существуют только текущие строки страниц для обеспечения производительности и совместимости. Поэтому, когда вы отправляете форму, отправляются только текущие формы формы страницы.

РЕШЕНИЕ 1: Отправить форму напрямую

Трюк состоит в том, чтобы повернуть элементы формы со страниц, отличных от текущего, в <input type="hidden"> перед отправкой формы.

var table = $('#example').DataTable();

// Handle form submission event
$('#frm-example').on('submit', function(e){
   var form = this;

   // Encode a set of form elements from all pages as an array of names and values
   var params = table.$('input,select,textarea').serializeArray();

   // Iterate over all form elements
   $.each(params, function(){
      // If element doesn't exist in DOM
      if(!$.contains(document, form[this.name])){
         // Create a hidden element
         $(form).append(
            $('<input>')
               .attr('type', 'hidden')
               .attr('name', this.name)
               .val(this.value)
         );
      }
   });
});

См. jQuery DataTables: как отправить все данные формы страницы - Отправить непосредственно для получения более подробной информации и примеров.

РЕШЕНИЕ 2: Отправить форму через Ajax

Другое решение - отправить форму через Ajax.

var table = $('#example').DataTable();

// Handle form submission event
$('#frm-example').on('submit', function(e){
   // Prevent actual form submission
   e.preventDefault();

   // Serialize form data
   var data = table.$('input,select,textarea').serialize();

   // Submit form data via Ajax
   $.ajax({
      url: '/echo/jsonp/',
      data: data,
      success: function(data){
         console.log('Server response', data);
      }
   });
});

См. jQuery DataTables: как отправить все данные формы страницы - Отправить через Ajax для получения более подробной информации и примеров.

ПРИМЕЧАНИЯ

Обратите внимание, что оба решения будут работать только в режиме обработки на стороне клиента.

ССЫЛКИ

См. jQuery Таблицы данных: как отправить данные всех страниц для более подробной информации.

2
ответ дан Gyrocode.com 27 August 2018 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: