javascript - 如何通过dataTable中的复选框或单选按钮选择记录
问题描述
我不确定这是否可以做到。我想要实现的是选择在dataTable
. 当我加载页面时,它将在服务器端呈现所有记录的列表。就像dataTables
我想添加一组复选框或单选按钮中的搜索一样,选择后它将填充满足该条件的记录。就我而言,它是类。
我相信在控制器方面我已经弄清楚了。在输入端,我需要知道如何将其传递给控制器。我以前有一个这样做过的表格,但是由于记录的数量,出于速度的目的,我将其更改foreach
为ajax json
结果。
这是我的控制器:
public ActionResult GetGrid()
{
// Server Side Parameters
int start = Convert.ToInt32(Request["start"]);
int length = Convert.ToInt32(Request["length"]);
string searchValue = Request["search[value]"];
string searchBy = Request["searchBy[value]"];
string sortColumnName = Request["column[" + Request["order[0][column]"] + "][name]"];
string sortDirection = Request["order[0][dir]"];
List<PartSearchView> prodList = new List<PartSearchView>();
using (GeneralEntities db = new GeneralEntities())
{
prodList = db.PartSearchView.ToList();
int totalRows = prodList.Count;
if (!string.IsNullOrEmpty(searchValue))
{
if(searchBy != null)
{
if (searchBy == "ELEC")
{
prodList = prodList.Where(x => x.Status == true).Where(x => x.VendorId != null).Where(x => x.PartNumber.StartsWith("E")).ToList();
}
}
else
{
prodList = prodList.Where(x => x.PartNumber != null && x.PartNumber.ToLower().Contains(searchValue.ToLower())).ToList();
}
}
int totalRowsAfterFilteing = prodList.Count;
// Sorting
prodList = prodList.OrderBy(sortColumnName + " " + sortDirection).ToList<PartSearchView>();
prodList = prodList.Skip(start).Take(length).ToList();
return Json(new { data = prodList, draw = Request["draw"], recordsTotal = totalRows, recordsFiltered = totalRowsAfterFilteing }, JsonRequestBehavior.AllowGet);
}
}
我不确定将收音机或复选框放在哪里。搜索字段会自动填充。我目前有它们的形式。如下所示。
<div class="input-group custom-search-form">
@using (Html.BeginForm())
{
<b>Search By:</b>
@Html.RadioButton("searchBy", "ELEC", new { id = 1, @value = "ELEC"})<text> Electrical </text>
@Html.RadioButton("searchBy", "MACH")<text> Machined Part </text>
@Html.RadioButton("searchBy", "PNEU")<text> Pneumatic Part </text>
@Html.RadioButton("searchBy", "PR")<text> Misc Part </text>
@Html.RadioButton("searchBy", "ASSY")<text> Assembly Part </text>
@Html.RadioButton("searchBy", "PRL")<text> Table Tops </text>
<div class="btn-group">
<button class="btn btn-primary" type="submit">
<i class="fa fa-search"></i> Search
</button>
</div>
}
</div>
第一个我添加了一个值和一个 ID。考虑过使用 agetElementById
但不知道如何将它作为参数或数据传递给 ajax 调用。
这是我的 JavaScript 代码:
var ControlerNameParts = "@Url.Content("~/Parts")";
$(document).ready(function () {
//debugger;
$("#PartSearchTable").dataTable({
"serverSide": true,
"ajax": {
"url": "/Parts/GetGrid/{searchBy == ELEC}",
"type": "GET",
"datatype": "JSON",
},
@*"sAjaxSource": "@Url.Content("~/Parts/GetGrid")",*@
"responsive": true,
"bRetrieve": true,
"bProcessing": true,
"deferRender": true,
"dom": 'lBfrtip',
"order": [0, "PartNumber"],
"language": {
"processing": "processing...Please wait"
},
"buttons": [
{ extend: 'copyHtml5', exportOptions: { columns: ':visible' } }
, { extend: 'excelHtml5', exportOptions: { columns: ':visible' } }
, { extend: 'csvHtml5', exportOptions: { columns: ':visible' } }
, { extend: 'pdfHtml5', exportOptions: { columns: ':visible' } }
, { extend: 'print', exportOptions: { columns: ':visible' } }
, 'colvis'
],
columnDefs: [{ orderable: false, targets: [1, 2, 3, 4, 5] }],
"aoColumns": [
{ "data": "PartNumber", "name": "PartNumber" },
{
"data": "PartImage", "aTargets": [0],
"render": function (data) {
if (data === null) return '<img src=Content/Images/Parts/NoImage.png style="width:50px;" />';
return '<img src=Content/Images/Parts/' + data + ' class="zoom" style="width:50px;" />';
}
},
{ "data": "Description", "name": "Description" },
{
"data": "HasUpgrade", "aTargets": [0],
"render": function (data) {
if (data === true) {
return '<b style="color:green;">Yes</b>';
} else {
return '<b style="color:red;">No</b>';
}
}
},
{
"data": "IsUpgrade", "aTargets": [0],
"render": function (data) {
if (data === true) {
return '<b style="color:green;">Yes</b>';
} else {
return '<b style="color:red;">No</b>';
}
}
},
{
"mRender": function (oObj, type, full) {
var button = '<div>'
button += '<div class="btn-group">';
button += '<a class="btn btn-warning btn-sm" href="' + ControlerNameParts + "/Details/" + full.Material + '" data-ajax-update="#SkEdit" data-ajax-success="openModalDialog(\'SkEdit\', \'Edit\')" data-ajax-mode="replace" data-ajax-method="GET" data-ajax-failure="clearModalDialog(\'SkEdit\');alert(\'Ajax call failed\')" data-ajax-begin="prepareModalDialog(\'SkEdit\')" data-ajax="true">Details</a> ';
button += '</div></div>';
return button;
}
},
],
});
});
谢谢你的帮助!
解决方案
推荐阅读
- ajax - SyntaxError:请求的模块“rxjs/ajax”不提供名为“ajax”的导出
- spring - Spring Data Rest - 自定义端点名称
- api - 如何使用 React Native 中的平面列表检测何时有来自 API 的新数据?
- c++ - 我怎么知道,如果我找到了我在 STL 列表中搜索的号码。
- javascript - 如何在索引中使用表达式时遍历数组数组
- python - Python pandas数据框根据字符串长度更改内容
- java - 如何在 JFrame 窗口中实时显示多个图像?
- docker - 为什么无人机无法使用插件/docker 找到我的仓库名称?
- php - 从会话数组 php 中获取单个元素以通过 MySQL SELECT 语句
- javascript - 防止 MongoDB 中的重复文档?