#jquery #asp.net-core #datatables
#jquery ( jquery ) #asp.net-ядро #таблицы данных
Вопрос:
Я внедряю asp.net основной проект 3.1. У меня есть представление, в котором есть таблица данных jQuery, и рядом со всеми его записями есть флажок. На мой взгляд, я должен реализовать 3 кнопки, каждая из которых имеет специальное действие для выбранных строк из таблицы данных. Например, если пользователь выбирает некоторые записи и нажимает на button1, я хочу, чтобы все эти выбранные строки отображались пользователю в модальном режиме. До сих пор я пытался получить выбранные элементы, но я не знаю, как я могу использовать ProductName, ApplicantName и ProductPrice каждой записи в модальном всплывающем окне. Вот что я попробовал:
@model IEnumerable<Dashboard.Models.myModel>
<head>
<link href="~/css/DataTable/jquery.dataTables.css" rel="stylesheet" type="text/css" />
<link href="~/contents/Index.css" rel="stylesheet" type="text/css" />
<link href="~/css/DataTable/jquery.dataTables.css" rel="stylesheet" type="text/css" />
</head>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/jquery/dist/jquery-ui.js"></script>
<script language="JavaScript" type="text/javascript" src="~/js/datatables.min.js"></script>
<script language="JavaScript" type="text/javascript" src="~/js/DataTable/DataTableCheckbox/dataTables.checkboxes.min.js"></script>
<script>
jQuery(document).ready(function ($) {
$("#myDummyTable").DataTable({
'columnDefs': [
{
'targets': 0,
"searching": false,
'checkboxes': {
'selectRow': true
}
}
],
'select': {
'style': 'multi'
},
'order': [[1, 'asc']],
"pagingType": "full_numbers"
});
var oTable = $("#myDummyTable").dataTable();
$("#Button1").click(function () {
$("input:checkbox", oTable.fnGetNodes()).each(function () {
var tuisre = $(this).is(":checked");
if (tuisre) {
//var no = $(this).row( this ).data();
//var no = $(this).parent().prev().prev().val();
//alert("no:" no " is checked");
// Here I need to know how I can get the selected rows data and display them on a bootstrap modal popup
}
})
})
});
$('#request_layout').css({ "background-color": "rgb(50, 149, 155)" });
</script>
<div class="my-5 col-sm-12 p-4">
<table id="myDummyTable" class="table m-table mytable table-striped table-bordered mb-4">
<thead>
<tr id="headerrow">
<th>
</th>
<th>
Product Name
</th>
<th>
Applicant Name
</th>
<th>
Price
</th>
<th>
operations
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
<input type="checkbox" />
</td>
<td>
@Html.DisplayFor(modelItem => item.ProductName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ApplicantName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ProductPrice)
</td>
<td>
<a onclick="showInPopup('@Url.Action("AddOrEdit","Productapplicants",new {id=item.Id},Context.Request.Scheme)','edit')" class="btn btn-info text-white"><i class="fas fa-pencil-alt"></i>Edit</a>|
<a onclick="showInPopup('@Url.Action("Details","Productapplicants",new {id=item.Id},Context.Request.Scheme)','Details')" class="btn btn-info text-white"><i class="fas fa-pencil-alt"></i>Details</a>|
<form asp-action="Delete" asp-route-id="@item.Id" onsubmit="return jQueryAjaxDelete(this)" class="d-inline">
<input type="submit" value="Delete" class="btn btn-danger" />
</form>
</td>
</tr>
}
</tbody>
</table>
</div>
<input id="Button1" type="button" value="button" />
Ответ №1:
Пожалуйста, проверьте следующий код. Он использует rows().nodes()
вместо устаревшего fnGetNodes
метода, который недоступен при использовании $().DataTable()
конструктора (как это сделано в моем коде).
$(document).ready(function() {
var oTable = $("#myDummyTable").DataTable({
select: {
style: 'multi'
}
});
$("#Button1").click(function() {
$("input:checkbox", oTable.rows().nodes()).each(function() {
if ($(this).is(":checked")) {
var row = $(this).closest('tr');
// output to the console the row data
console.log(oTable.row($(row)).data());
}
});
});
});
<link href="https://cdn.datatables.net/1.10.23/css/jquery.dataTables.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.23/js/jquery.dataTables.min.js"></script>
<div>
<div class="my-5 col-sm-12 p-4">
<table id="myDummyTable" class="table m-table mytable table-striped table-bordered mb-4">
<thead>
<tr id="headerrow">
<th></th>
<th>Product Name</th>
<th>Applicant Name</th>
<th>Price</th>
<th>operations</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" /></td>
<td>Beer</td>
<td>Smith</td>
<td>35</td>
<td>[buttons here ...]</td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>Coke</td>
<td>Pam</td>
<td>22</td>
<td>[buttons here ...]</td>
</tr>
</tbody>
</table>
</div>
<input id="Button1" type="button" value="button" />
</div>