Итак, у меня есть список меню для администратора и под ними. У меня есть загрузка новостей. Когда это конкретное меню нажато, я вызываю частичное представление, как показано ниже.Как повторно инициализировать dataTables с новыми данными с сервера с помощью ajax в MVC
$("#body_data").load("/Admin/GetDailyNews", function() {
$("#dailyNews").dataTable({
"lengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]],
"columnDefs": [{ "targets": 3, "orderable": false }],
"pagingType": "full_numbers",
"oLanguage": { "sSearch": "" },
"deferRender": true
});
}
Мой PartialViewResult в AdminController, как показано ниже:
[HttpGet]
public PartialViewResult GetDailyNews()
{
var context=new MyContext();
List<AVmodel.NewsEventsViewModel> model = new List<AVmodel.NewsEventsViewModel>();
List<news> news = (from n in context.news where n.stdate >= System.DateTime.Now orderby n.stdate descending select n).ToList();
foreach (var NEWS in news)
{
model.Add(new AVmodel.NewsEventsViewModel()
{
EDate = NEWS.stdate,
EDesc = NEWS.brief,
EName = Convert.ToString(NEWS.name),
NID = NEWS.nid
});
}
return PartialView("_UploadNews", model);
}
Мой _UploadNews.cshtml как ниже
@model IEnumerable<MCB.Models.BusinessObjects.AVmodel.NewsEventsViewModel>
<table id="dailyNews" cellspacing="0" width="100%" class="table table-condensed table-hover table-responsive table-bordered order-column">
<thead>
<tr>
<th>Event Date</th>
<th>Event Name</th>
<th>Detailed News</th>
<th class="disabled">Actions</th>
</tr>
</thead>
<tbody>
@foreach (var news in Model)
{
<tr data-row="[email protected]">
<td>@news.EDate.Date.ToShortDateString()</td>
<td>@Convert.ToString(news.EName)</td>
<td>@Convert.ToString(news.EDesc)</td>
<td><button class="btn btn-primary" data-target="#editAddNews" data-toggle="modal" onclick="javascript: EditNews(this);" data-info="[email protected]"><span class="fa fa-edit"></span> </button> <button class="btn btn-danger" onclick="javascript: DeleteNews(this);" data-info="[email protected]"><span class="fa fa-trash-o"></span></button></td>
</tr>
}
</tbody>
</table>
Так до сих пор это хорошо. Все идет хорошо, и в таблице отображаются только те новости, которые будут в будущем. Теперь у меня есть возможность для администратора получать весь набор новостей из таблицы, включая прошлые дни. Так что я держал флажок в моем PartialView, как показано ниже, который является самозагрузки переключатель типа:
<input type="checkbox" name="fetchNews-checkbox" data-on-text="All News" data-off-text="Upcoming News" data-on-color="primary" data-off-color="default" data-label-width="100px" data-label-text="News details">
и я написал onswitchchange
для данного флажка, как показано ниже:
$("[name='fetchNews-checkbox']").on('switchChange.bootstrapSwitch', function (event, state) {
if (state)
{
fetchNews('all');
}
else
{
fetchNews('upcoming');
}
});
и мой fetchNews
как показано ниже:
function fetchNews(context)
{
if(context!="")
{
$("#dailyNews").dataTable({
"sPaginationType": "full_numbers",
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "/Admin/FetchNews"
});
}
}
, когда эта функция называется Я получаю предупреждение, которое говорит
Предупреждение DataTables: таблица id = dailyNews - не удается повторно инициализировать DataTable. Для получения дополнительной информации об этой ошибке, см http://datatables.net/tn/3
Я посетил выше сказал ссылку, но не смог ничего понять. Может кто-нибудь, пожалуйста, сообщите мне, как вызвать вызов метода json контроллера и отобразить список новостей в этой таблице?
Хороший ответ братан .. :) Спасибо за это .. :) –
Спасибо, что поделились! –
Спасибо, работал как шарм ... –