Kendo-MVC ListView-如何获取选中行的复选框状态(选中或未选中)
Kendo -MVC ListView - How to Get Checkbox state(checked or not) on selected row
我正试图在每次单击特定行的复选框时捕捉复选框状态(选中或未选中)。我可以得到点击的行的id值,但我无法正确检索复选框状态,大多数时候都会返回false(即使选中了)。最后,我计划根据复选框状态编辑记录。
-根据模型值设置的复选框的"页面加载时"状态。
Html(剃须刀)
@(Html.Kendo().ListView<AIS.UI.WebService.Proxy.DSrvAllService.NewsItem>()
.Name("listView")
.Events(e => e.Change("changeFunc"))
.TagName("div")
.Selectable()
.ClientTemplateId("template")
.AutoBind(true)
.DataSource(dataSource => dataSource
.Model(model => model.Id("ID"))
.PageSize(5)
//...Some another options
剑道模板:
<div class="container-fluid" style="padding-right:0px;border-bottom:1px solid ''#d4d4d4">
<div class=" col-sm-4" style="padding-top: 2px; min-height: 35px;margin-right:-1px; border-right: 1px solid rgb(212, 212, 212)">
<span class="bold" style="color: black;">#:Title#</span>
</div>
<div id="typeField" class="col-sm-4" >
@if(@ViewBag.type=="all")
{
<label class="checkbox-inline">
<input type="checkbox" id="webCheckBox" value="web" checked = "checked" />
<span style="vertical-align:middle">Web</span>
</label>
<label class="checkbox-inline">
<input type="checkbox" id="ambulanceCheckBox" value="client" checked="checked" />
<span>Ambulance Client</span>
</label>
}
else{
<label class="checkbox-inline">
<input type="checkbox" id="webCheckBox" value="web" />
@if (@ViewBag.type == "web")
{ <input type="checkbox" id="webCheckBox" value="web" checked="checked" /> }
<span style="vertical-align:middle">Web</span>
</label>
<label class="checkbox-inline">
<input type="checkbox" id="ambulanceCheckBox" value="client" />
@if (@ViewBag.type == "client")
{ <input type="checkbox" id="ambulanceCheckBox" value="client" checked="checked" /> }
<span>Ambulance Client</span>
</label>
}
</div>
<div class="col-sm-2 pull-right " style="padding-right:0px;" >
@* <a class="btn pull-right" href="''#"><span class="k-icon k-delete"></span></a>*@
<a id="deletebutton" class="btn-old btn-default pull-right k-button-icontext k-delete-button" ><span class="k-icon k-delete"></span></a>
<a class="btn-old btn-default pull-right" onClick="OpenAnnouncement('#:ID#')"><span class="k-icon k-edit"></span></a>
@* <button id="opencasedetails" class="btn pull-right btn-primary" onClick="OpenAnnouncement('#:ID#')" type="button" >Edit</button>
<button id="deletecasedetails" class="btn pull-right btn-primary" onClick="deleteAnnouncement('#:ID#')" type="button" >Delete</button>*@
</div>
</div>
</script>
Js:
<script >
function changeFunc(e)
{
var index = this.select().index(),
dataItem = this.dataSource.view()[index];
//id of the selected row's record
var id = dataItem.ID;
//The section that trying the retrieve checkboxes state on click
//Failed!!!
var isWeb = $('#ambulanceCheckBox').is(':checked');
var isClient = $('#webCheckBox').is(':checked');
//Also Failed
// var isWeb = $('#ambulanceCheckBox').prop('checked')
// var isClient = $('#webCheckBox').prop(':checked');
}
</script>
给模板中的复选框一个ID不是一个好主意,因为会有多个输入元素具有这样的ID。
相反,我建议给它上课。
一旦给它一个类,就可以在选定行中找到该复选框并获取其状态。
例如
function changeFunc(e) {
alert(this.select().find(".myCheckBox").is(":checked"));
...
}
首先,应该从输入元素中删除所有id和class标记。
然后添加onClick事件:
<input type="checkbox" onclick="checkboxChange(this)" value="web" checked="checked" />
JS:
<script >
function checkboxChange(e) {
var check = e.checked;
var value = e.value;
var listview= $(e).closest(".k-listview").data("kendoListView");
//Get Selected rows's data
var dataItem = listview.dataSource.view()[listview.select().index()];
var id=dataItem.ID;
alert("Last State: " + check + "/ Value: " + value + "/ Row id :" + id);
};
</script>
相关文章:
- 基于复选框状态的条件数学
- 导航到另一个页面后,复选框状态会更改
- 如何根据各种复选框状态执行操作
- 检查复选框状态-Javascript
- JavaScript-使用sessionStorage保存文档之间共享的复选框状态
- React.js可以't更改复选框状态
- 如何检查更改事件的复选框状态
- 基于各种用户行为管理复选框状态
- 根据 ajax 响应中的值设置复选框状态
- 从 django 读取复选框状态
- 分析获取查询字符串并使用值更改复选框状态
- 是否可以在不导致单击事件的情况下更改复选框状态
- 如何在 javascript 的信息窗口中使用 cookie 保存复选框状态
- 复选框提醒脚本在动态加载测试时不记得复选框状态.php其中包含复选框
- 保持选中复选框状态,直到用户取消选中
- 复选框状态(如果未选中)
- 复选框状态和其他属性
- 根据 AngularJS 中的多个条件更改复选框状态
- 自动将复选框状态/值保存到数据库
- 在复选框状态ExtJS 4.1中手动检测与编程更改