[英]Using jQuery to get multiple checkbox's value and Multiple Delete Using jquery json
我已经使用jQuery json绑定了html表。 我想使用jQuery json获取多个复选框值,并通过选择的多个delete方法删除。 这是我绑定表的代码。
$(function () {
debugger
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "WebForm5.aspx/BindDatatable",
data: "{}",
dataType: "json",
success: function (dt) {
debugger;
for (var i = 0; i < dt.d.length; i++) {
$("#example1 > tbody").append("<tr><td> <input type='checkbox' /></td><td>" + dt.d[i].CategoryID + "</td><td>" + dt.d[i].Name + "</td><td>" + dt.d[i].Status + "</td><td> <button type='submit'>Submit</button><button type='submit' onclick='deleteRecord(" + dt.d[i].CategoryID + ")'>Delete</button> </tr>");
}
$("#example1").DataTable();
},
error: function (result) {
alert("Error");
}
});
});
这是我选择的“删除按钮”(多次删除):
<button type="button" name="deletebtn" id="deletebtn">Delete Selected</button>
这是我的html表:
<div class="box-body">
<button type="button" name="deletebtn" id="deletebtn">Delete Selected</button>
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Check Box</th>
<th>Category Name</th>
<th>Category Details</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody id="myBody">
</tbody>
</table>
</div>
你只是告诉我:
1.选中所有复选框的代码是什么?
2.使用多个jQuery删除代码?
服务器端代码在此处用于单个删除(不带复选框):
[WebMethod]
public static void deleteRecord(int Id)
{
clsCategoryBL objproject = new clsCategoryBL();
objproject.CategoryDelete(Id);
}
在BL中:
public string CategoryDelete(int CategoryID)
{
using (KSoftEntities db = new KSoftEntities())
{
try
{
var categoryDetails = db.tblCategories.Where(i => i.CategoryID == CategoryID).SingleOrDefault();
db.tblCategories.Remove(categoryDetails);
db.SaveChanges();
return "Record deleted successfully";
}
catch (Exception ex)
{
}
return "Error on deletion";
}
}
使用以下代码在客户端发生删除:
$().ready(function () {
$('body').on('click', '#deletebtn', function () {
debugger;
$("#example1 tr").each(function () {
var rowSelector = $(this);
if (rowSelector.find("input[type='checkbox']").prop('checked')) {
rowSelector.remove();
}
});
});
});
绑定表的代码:
enter code here
protected void Page_Load(object sender, EventArgs e)
{
if (Session["adminuser"] == null)
Response.Redirect("Default.aspx");
if (!IsPostBack)
{
// Page.Title = "Category Details";
BindDatatable();
}
}
[WebMethod]
public static UserDetails[] BindDatatable()
{
clsCategoryBL objcategory = new clsCategoryBL();
List<UserDetails> details = new List<UserDetails>();
DataTable dt = new DataTable();
//var categories= clsCategoryBL.GetAllCategoryDetails("admin");
dt = objcategory.GetAllCategoryDetails("admin");
if (dt.Rows.Count > 0)
{
foreach (DataRow dtrow in dt.Rows)
{
UserDetails user = new UserDetails();
user.CategoryID = dtrow["CategoryID"].ToString();
user.Name = dtrow["Name"].ToString();
user.Status = dtrow["Status"].ToString();
details.Add(user);
}
//literal1.Text = html.ToString();
}
return details.ToArray();
}
public class UserDetails
{
public string CategoryID { get; set; }
public string Name { get; set; }
public string Status { get; set; }
}
我想在服务器端删除它,这也意味着在我的数据库(Sql)上,那我该怎么办???
我也想通过单击数据库上的多个复选框来删除多行。.我也在上面的后端代码中提到了..我想通过单击2至3复选框来删除html表的行(可能会有所不同,具体取决于数据),然后点击删除所选按钮。按f12后的表格结构:
enter code here
<table id="example1" class="table table-bordered table-striped dataTable no-footer" role="grid" aria-describedby="example1_info">
<thead>
<tr role="row"><th class="sorting_asc" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" aria-sort="ascending" aria-label="Check Box: activate to sort column descending" style="width: 204px;">Check Box</th><th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" aria-label="Category Name: activate to sort column ascending" style="width: 276px;">Category Name</th><th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" aria-label="Category Details: activate to sort column ascending" style="width: 293px;">Category Details</th><th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" aria-label="Status: activate to sort column ascending" style="width: 148px;">Status</th><th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" aria-label="Action: activate to sort column ascending" style="width: 211px;">Action</th></tr>
</thead>
<tbody id="myBody">
<tr role="row" class="odd"><td class="sorting_1"> <input type="checkbox"></td><td>42</td><td>xyz</td><td>True</td><td> <button type="submit">Submit</button><button type="submit" onclick="deleteRecord(42)">Delete</button> </td></tr><tr role="row" class="even"><td class="sorting_1"> <input type="checkbox"></td><td>33</td><td>Advertising</td><td>True</td><td> <button type="submit">Submit</button><button type="submit" onclick="deleteRecord(33)">Delete</button> </td></tr><tr role="row" class="odd"><td class="sorting_1"> <input type="checkbox"></td><td>31</td><td>Travel & Hospitality</td><td>True</td><td> <button type="submit">Submit</button><button type="submit" onclick="deleteRecord(31)">Delete</button> </td></tr></tbody>
</table>
假设一行中只有一个复选框,则可以简单地遍历各行并将其发布到现有的[WebMethod]
将第二列用作ID( EDIT ):
$().ready(function () {
$('body').on('click', '#deletebtn', function () {
$("#example1 tr").each(function () {
var rowSelector = $(this);
if (rowSelector.find("input[type='checkbox']").prop('checked'))
{
//THE MARKUP SHOWING THE ID IS NOT AVAILABLE
//POST A TABLE ENTRY TO CLEAR UP
var id = rowSelector.find('td').first().next().html();
var sendObj = {Id : id};
//USE JSON OBJECT
$.ajax({
url : "/page.aspx/deleteRecord",//CHANGE TO YOUR URL
dataType: "json",
data: sendObj,
type: "POST",
success: function () {
alert("entry deleted");
}
});
rowSelector.remove();
}
});
});
});
说明
使用JQuery,您只需遍历每一行并查找复选框值。 请注意,您还将遍历标题,因此,如果存在复选框,则必须添加逻辑以跳过第一次迭代 。
编辑3:如果选中此复选框,您还将ID张贴到服务器。 需要注意的重要一点是,您宁愿发布ID的单个批量数组,而不是发布多个单独的帖子,但是该方法尚未在此处公开或发布。
祝好运
代码片段(仅客户端)
$().ready(function () { $('body').on('click', '#deletebtn', function () { $("#example1 tr").each(function () { var rowSelector = $(this); if (rowSelector.find("input[type='checkbox']").prop('checked')) { rowSelector.remove(); } }); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div> <button id='deletebtn'>DELETE</button> <table id='example1'> <thead> <tr> <th>CHECKBOX</th> <th>NAME</th> <th>DESCRIPTION</th> </tr> </thead> <tbody> <tr> <td><input type='checkbox' value='check' /></td> <td>the name</td> <td>the description</td> </tr> <tr> <td><input type='checkbox' value='check' /></td> <td>the name</td> <td>the description</td> </tr> <tr> <td><input type='checkbox' value='check' /></td> <td>the name</td> <td>the description</td> </tr> </tbody> </table> </div>
一个更简单的方法是,如果为表单中的所有复选框提供一个类,然后单击按钮,则只需使用该类迭代所有复选框,然后序列化它们的值即可。
var values = $("#Myform").find(".CheckBoxClass").serialize();
在这里,变量value
将包含表单中所有复选框的值,您可以在服务器上使用ajax将其发送以执行进一步的操作。
您可以使用下面提到的内容。
$(“ example1 input:checkbox”)。prop('checked',this.checked);
或者已经在下面的帖子中回答了
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.