関連する詳細とステータス列 (ビット フィールド - チェックボックス) を含むページに製品のリストがある ASP.NET アプリケーションがあります。それは完全に機能し、Ajax を使用してステータスを true から false に、またはその逆に変更できます。そうしている間、私は CheckBox の状態を維持しています。つまり、true の場合はチェックされたままになり、それ以外の場合はチェックされません。赤くハイライトされた部分を除いて、以下の画像を参照してください (もう 1 つ - このシナリオでは、True はアクティブな製品を意味し、False は非アクティブな製品を意味します)。
今私がしようとしているのは、CheckBoxes をトグル スイッチにして、CheckBoxes の変更をこのようなものに保つことです - BootStrap Toggle Switches
私はそれを行う方法がわからず、これに従って、次のようにクラスを使用してチェックボックスをトグルスイッチとして機能させようとしました-jQuery Toggle Switches
<script>
$(document).ready(function () {
$('.toggle-checkbox').btnSwitch({
Theme: 'Light',
OnText: "On",
OffText: "Off",
OnValue: true,
OffValue: false
});
});
</script>
注:画像に表示されている CheckBoxes の状態は、true、checked、およびその逆のように赤く強調表示されていません。これがトグルスイッチでも同じことができるかどうかを知りたいです.
データベース スクリプト:
CREATE TABLE [dbo].[Products](
[Id] [int] IDENTITY(1,1) PRIMARY KEY,
[ProductName] [nvarchar](MAX) NOT NULL,
[Time_Posted] [nvarchar](MAX) NOT NULL,
[Status] [bit] NOT NULL
)
INSERT INTO Products VALUES
('Denim', '7:30:10 PM', 1),
('Pringles', '8:00:00 PM', 1)
モデル:
public class Product
{
public int Id { get; set; }
public string ProductName{ get; set; }
public string Time_Posted { get; set; }
public bool Status { get; set; }
}
コントローラ:
//Get details of the products
[HttpGet]
public ActionResult Index()
{
MainDbContext db = new MainDbContext();
var con = (from c in db.Products
select c).ToList();
return View(con);
}
//Update status of the products like active or inactive
[HttpPost]
public JsonResult UpdateStatus(int id, bool status)
{
MainDbContext db = new MainDbContext();
var result = db.Lists.Find(id);
if (result != null)
{
result.Status = status;
db.Entry(result).State = EntityState.Modified;
db.SaveChanges();
}
return Json(true);
}
意見:
@model SampleApp.Models.Product
@{
ViewBag.Title = "Index";
}
<link href="~/Scripts/jquery.btnswitch.css" rel="stylesheet" />
<script src="~/Scripts/jquery-3.1.1.slim.min.js"></script>
<script src="~/Scripts/jquery.btnswitch.js"></script>
<div id="divData">
<table class="table table-bordered table-condensed" id="data">
<thead>
<tr>
<th style="text-align:center;" class="hide">ID</th>
<th style="text-align:center;">Products</th>
<th style="text-align:center;">Time Posted</th>
<th style="text-align:center;">Status</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < Model.Items.Count; i++)
{
<tr>
<td id="ID" style="text-align: center;" class="hide">@Html.DisplayFor(modelItem => Model.Items[i].Id)</td>
<td style="text-align: center;">@Html.DisplayFor(modelItem => Model.Items[i].ProductName)</td>
<td style="text-align: center;">@Html.DisplayFor(modelItem => Model.Items[i].Time_Posted)</td>
<td style="text-align: center;">@Html.CheckBoxFor(modelItem => Model.Items[i].Status, new { @class = "toggle-checkbox", data_id = Model.Items[i].Id })</td>
</tr>
}
</tbody>
</table>
</div>
<script type="text/javascript">
var url = '@Url.Action("UpdateStatus")';
$('.toggle-checkbox').click(function () {
var isChecked = $(this).is(':checked'); //CheckBox checked - True or false
var id = $(this).data('id'); //Get the id of that specific checked row
$.post(url, { id: id, status: isChecked }, function (response) {
if (response) {
alert("Status changed");
}
})
});
</script>
<script>
$(document).ready(function () {
$('.toggle-checkbox').btnSwitch({ //This is the script for toggling
Theme: 'Light',
OnText: "On",
OffText: "Off",
OnValue: true,
OffValue: false
});
});
</script>