I have a telerik treeview with Checkboxes. I am using the Latest version of telerik .914(sep 14 relaase).
But even in this version also we dodnt find the fix for we uncheck the parent node all its child nodes also should be unchecked.
But this is working only one time. Second time the Same node if i try to uncheck. it does not uncheck its child node.
Prevouisly we were using .217 version of teleriks and we faced the same issue. We reported the issue in this table format.
Telerik .treeview.js old version
Telerik.treeview.js new version
nodeCheck: function (e, d) {
c(e, this.element).each(c.proxy(function (h, i) {
var f = c(i).closest(".t-item"),
g = c("> div > .t-checkbox", f),
j = this.element.id + "_checkedNodes",
h = g.find(':input[name="' + j + '.Index"]').val();
g.find(':input[name="' + j + "[" + h + '].Text"]').remove();
g.find(':input[name="' + j + "[" + h + '].Value"]').remove();
g.find(":checkbox").attr({
checked: d ? "checked" : "",
value: d
});
if (d) {
c(b.treeview.getNodeInputsHtml(this.getItemValue(f), this.getItemText(f), j, h)).appendTo(g)
}
}, this))
nodeCheck: function (e, d) {
c(e, this.element).each(c.proxy(function (j, k) {
var h = c(k).closest(".t-item"),
i = c("> div > .t-checkbox", h),
g = this.element.id + "_checkedNodes",
j = i.find(':input[name="' + g + '.Index"]').val(),
f = i.find(":checkbox");
i.find(':input[name="' + g + "[" + j + '].Text"]').remove();
i.find(':input[name="' + g + "[" + j + '].Value"]').remove();
f.attr("value", d);
if (d) {
f.attr("checked", "checked");
c(b.treeview.getNodeInputsHtml(this.getItemValue(h), this.getItemText(h), g, j)).appendTo(i)
}
else {
f.attr("checked", "");
}
But this fix is still not avialble in .914.
Could you Please provide the new Telerik version Treeview JS whcih will have this fix properly fixed.
Kindly Respond as soon as possible.
Thanks ,
Shilpa.
5 Answers, 1 is accepted
We could not reproduce the issue locally. Please send a project that shows the issue.
Greetings,
Alex Gyoshev
the Telerik team
I am facing this issue of checking the parent check box does not check the child as well as unchecking the checkbox does not uncheck.It works for first time and when i second time uncheck it it does not work.
I am attaching the files that am using currently.
Please let me the compatibility for for 914 version of Telerik.treeview.min.js.
Thanks,
Shilpa
<%
@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MS.IT.HRE.Performance.Web.Models.CommitmentLibraryAdmin.ManageCommitmentTemplateViewModel>" %>
<
div style="height: 600px; overflow: scroll; width:249px;text-align:left;">
<
div style="font-family:Calibri; font-size:11px;"><input type="checkbox" id="selectall" checked="checked"/> Select All</div>
 
<% using (Html.BeginForm())
{
List<TreeViewItem> checkedNodes = ViewData["TreeView1_CheckedNodes"] as List<TreeViewItem>;
Dictionary<String, object> dic = new Dictionary<string, object>();
dic.Add("id", "true");
%>
<%
= Html.Telerik()
.TreeView()
.HtmlAttributes(new { style = "overflow:visible;font-family:Calibri; font-size:11px;" })
.ShowCheckBox(true)
.Name("TreeView1")
.ClientEvents(events => events
.OnChecked("onChecked")
//.OnLoad("onLoad")
)
.BindTo(Model.Profesions, (item, profession) =>
{
item.Text = profession.Description;
item.Value = profession.ProfessionId.ToString();
item.LoadOnDemand = profession.Disciplines.Count > 0;
item.Checked = true;
}).DataBinding(dataBinding => dataBinding.Ajax().Enabled(true).Select("_AjaxLoading", "ManageCommitmentTemplate", new { periodid = Convert.ToInt32(ViewData["SelectedPeriod"]) }))%>
</div>
<% } %>
 
 
<script language="javascript",type="text/javascript">
 
$(
function () {
$(
"#selectall").click(function () {
var checkAll = true;
if ($(this).is(":checked"))
{
var treeView = $('#TreeView1').data('tTreeView');
var allCheckboxes = $('#TreeView1').find("li").find('> div > .t-checkbox :checkbox');
$.each(allCheckboxes,
function (index, checkbox)
{
$(checkbox).attr(
'checked', checkAll ? true : false);
// treeView.checkboxClick("click", checkbox);
});
 
}
else
{
$(
'#TreeView1').find("li").find('> div > .t-checkbox :checkbox').removeAttr("checked");
}
});
});
 
 
function treeView() {
return $('#TreeView1').data('tTreeView');
}
 
function ParseNodes(nodeItem) {
var nodeValue = $('.t-checkbox > .t-input:hidden', nodeItem)[0].attributes('value').value;
var nodeParts = nodeValue.split(':');
nodeObj =
new Object;
//Clicked on Profession
if (nodeParts.length == 1) {
nodeObj.Type =
'P';
nodeObj.ProfessionId = nodeParts[0];
nodeObj.DisciplineId =
null;
nodeObj.StandardTitleId =
null;
return nodeObj;
}
if (nodeParts.length == 2) {
nodeObj.Type =
'D';
nodeObj.ProfessionId = nodeParts[0];
nodeObj.DisciplineId = nodeParts[1];
nodeObj.StandardTitleId =
null;
return nodeObj;
}
if (nodeParts.length == 3) {
nodeObj.Type =
'S';
nodeObj.ProfessionId = nodeParts[0];
nodeObj.DisciplineId = nodeParts[1];
nodeObj.StandardTitleId = nodeParts[2];
return nodeObj;
}
return nodeObj;
}
 
function workOnParent(nodeObj, checked) {
if (nodeObj.Type == 'D') {
var checked = 0;
$(
'> ul > li > ul > li > div > .t-checkbox > input[value*="' + nodeObj.ProfessionId + ':"]', treeView().element).each(
function (index, value) {
if (value.nextSibling.checked)
checked = 1;
}
)
;
if (checked == 1) {
var profession = $("> ul > li", treeView().element)[nodeObj.ProfessionId];
treeView().nodeCheck(profession,
true);
}
else {
var profession = $("> ul > li", treeView().element)[nodeObj.ProfessionId];
treeView().nodeCheck(profession,
false);
}
}
else if (nodeObj.Type == 'S') {
//check if all ST's are in same condition
var inputFilter = nodeObj.ProfessionId + ':' + nodeObj.DisciplineId;
var stChecked = 0
$(
'> ul > li > ul > li > ul > li > div > .t-checkbox > input[value*="' + inputFilter.toString() + ':"]', treeView().element).each(
function (index, value) {
if (value.nextSibling.checked)
stChecked = 1;
}
)
if (stChecked == 1) {
var profession = $("> ul > li", treeView().element)[nodeObj.ProfessionId];
treeView().nodeCheck(profession,
true);
var discipline = $('> ul > li > ul > li > div > .t-checkbox > input[value="' + inputFilter + '"]', treeView().element)[0];
treeView().nodeCheck(discipline,
true);
}
else {
var discipline = $('> ul > li > ul > li > div > .t-checkbox > input[value="' + inputFilter + '"]', treeView().element)[0];
treeView().nodeCheck(discipline,
false);
//Check if all the disciplines are unchecked
var disChecked = 0;
$(
'> ul > li > ul > li > div > .t-checkbox > input[value*="' + nodeObj.ProfessionId + ':"]', treeView().element).each(
function (index, value) {
if (value.nextSibling.checked)
disChecked = 1;
}
)
if (disChecked == 1) {
var profession = $("> ul > li", treeView().element)[nodeObj.ProfessionId];
treeView().nodeCheck(profession,
true);
}
else {
var profession = $("> ul > li", treeView().element)[nodeObj.ProfessionId];
treeView().nodeCheck(profession,
false);
}
 
 
}
 
}
 
 
}
 
function onChecked(e) {
 
var nodeObj = ParseNodes(e.item.innerHTML);
if (e.checked == false) {
$(
"#selectall").attr('checked',false);
}
//Acted on Profession check boxes
if (nodeObj.Type == 'P') {
// Repeat the Action on Disciplines
$(
"> ul > li > ul > li", treeView().element).each(
function (Index) {
var item = $("> ul > li > ul > li", treeView().element)[Index];
var nodesubObj = ParseNodes(item.innerHTML);
//Only those disciplines that are under select profession node.
if (nodesubObj.ProfessionId == nodeObj.ProfessionId)
treeView().nodeCheck(item, e.checked);
}
)
// Repeat the Action on STs
$(
"> ul > li > ul > li > ul > li", treeView().element).each(
function (Index) {
var item = $("> ul > li > ul > li > ul > li", treeView().element)[Index];
var nodesubObj = ParseNodes(item.innerHTML);
//Only those STs that are under selected profession node.
if (nodesubObj.ProfessionId == nodeObj.ProfessionId)
treeView().nodeCheck(item, e.checked);
 
 
}
)
}
//Acted on Discipline check boxes
else if (nodeObj.Type == 'D') {
// Repeat the Action on STs
$(
"> ul > li > ul > li > ul > li", treeView().element).each(
function (Index) {
var item = $("> ul > li > ul > li > ul > li", treeView().element)[Index];
var nodesubObj = ParseNodes(item.innerHTML);
//Only those STs that are under selected profession node.
if ((nodesubObj.DisciplineId == nodeObj.DisciplineId) && (nodesubObj.ProfessionId == nodeObj.ProfessionId))
treeView().nodeCheck(item, e.checked);
}
)
workOnParent(nodeObj, e.checked);
}
else if (nodeObj.Type == 'S') {
workOnParent(nodeObj, e.checked);
}
}
// function onLoad(e) {
//
// var nodeItem = e.item.innerHTML;
// var nodeValue = $('.t-checkbox > .t-input:hidden', nodeItem)[0].attributes('value').value;
// if (nodeValue == null)
// {
// $('#selectall').hide();
// }
// else {
// $('#selectall').show();
// }
// }
</
script>
<%
@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MS.IT.HRE.Performance.Web.Models.CommitmentLibraryAdmin.ManageCommitmentTemplateViewModel>" %>
<
div style="height: 600px; overflow: scroll; width:249px;text-align:left;">
<
div style="font-family:Calibri; font-size:11px;"><input type="checkbox" id="selectall" checked="checked"/> Select All</div>
 
<% using (Html.BeginForm())
{
List<TreeViewItem> checkedNodes = ViewData["TreeView1_CheckedNodes"] as List<TreeViewItem>;
Dictionary<String, object> dic = new Dictionary<string, object>();
dic.Add("id", "true");
%>
<%
= Html.Telerik()
.TreeView()
.HtmlAttributes(new { style = "overflow:visible;font-family:Calibri; font-size:11px;" })
.ShowCheckBox(true)
.Name("TreeView1")
.ClientEvents(events => events
.OnChecked("onChecked")
//.OnLoad("onLoad")
)
.BindTo(Model.Profesions, (item, profession) =>
{
item.Text = profession.Description;
item.Value = profession.ProfessionId.ToString();
item.LoadOnDemand = profession.Disciplines.Count > 0;
item.Checked = true;
}).DataBinding(dataBinding => dataBinding.Ajax().Enabled(true).Select("_AjaxLoading", "ManageCommitmentTemplate", new { periodid = Convert.ToInt32(ViewData["SelectedPeriod"]) }))%>
</div>
<% } %>
 
 
<script language="javascript",type="text/javascript">
 
$(
function () {
$(
"#selectall").click(function () {
var checkAll = true;
if ($(this).is(":checked"))
{
var treeView = $('#TreeView1').data('tTreeView');
var allCheckboxes = $('#TreeView1').find("li").find('> div > .t-checkbox :checkbox');
$.each(allCheckboxes,
function (index, checkbox)
{
$(checkbox).attr(
'checked', checkAll ? true : false);
// treeView.checkboxClick("click", checkbox);
});
 
}
else
{
$(
'#TreeView1').find("li").find('> div > .t-checkbox :checkbox').removeAttr("checked");
}
});
});
 
 
function treeView() {
return $('#TreeView1').data('tTreeView');
}
 
function ParseNodes(nodeItem) {
var nodeValue = $('.t-checkbox > .t-input:hidden', nodeItem)[0].attributes('value').value;
var nodeParts = nodeValue.split(':');
nodeObj =
new Object;
//Clicked on Profession
if (nodeParts.length == 1) {
nodeObj.Type =
'P';
nodeObj.ProfessionId = nodeParts[0];
nodeObj.DisciplineId =
null;
nodeObj.StandardTitleId =
null;
return nodeObj;
}
if (nodeParts.length == 2) {
nodeObj.Type =
'D';
nodeObj.ProfessionId = nodeParts[0];
nodeObj.DisciplineId = nodeParts[1];
nodeObj.StandardTitleId =
null;
return nodeObj;
}
if (nodeParts.length == 3) {
nodeObj.Type =
'S';
nodeObj.ProfessionId = nodeParts[0];
nodeObj.DisciplineId = nodeParts[1];
nodeObj.StandardTitleId = nodeParts[2];
return nodeObj;
}
return nodeObj;
}
 
function workOnParent(nodeObj, checked) {
if (nodeObj.Type == 'D') {
var checked = 0;
$(
'> ul > li > ul > li > div > .t-checkbox > input[value*="' + nodeObj.ProfessionId + ':"]', treeView().element).each(
function (index, value) {
if (value.nextSibling.checked)
checked = 1;
}
)
;
if (checked == 1) {
var profession = $("> ul > li", treeView().element)[nodeObj.ProfessionId];
treeView().nodeCheck(profession,
true);
}
else {
var profession = $("> ul > li", treeView().element)[nodeObj.ProfessionId];
treeView().nodeCheck(profession,
false);
}
}
else if (nodeObj.Type == 'S') {
//check if all ST's are in same condition
var inputFilter = nodeObj.ProfessionId + ':' + nodeObj.DisciplineId;
var stChecked = 0
$(
'> ul > li > ul > li > ul > li > div > .t-checkbox > input[value*="' + inputFilter.toString() + ':"]', treeView().element).each(
function (index, value) {
if (value.nextSibling.checked)
stChecked = 1;
}
)
if (stChecked == 1) {
var profession = $("> ul > li", treeView().element)[nodeObj.ProfessionId];
treeView().nodeCheck(profession,
true);
var discipline = $('> ul > li > ul > li > div > .t-checkbox > input[value="' + inputFilter + '"]', treeView().element)[0];
treeView().nodeCheck(discipline,
true);
}
else {
var discipline = $('> ul > li > ul > li > div > .t-checkbox > input[value="' + inputFilter + '"]', treeView().element)[0];
treeView().nodeCheck(discipline,
false);
//Check if all the disciplines are unchecked
var disChecked = 0;
$(
'> ul > li > ul > li > div > .t-checkbox > input[value*="' + nodeObj.ProfessionId + ':"]', treeView().element).each(
function (index, value) {
if (value.nextSibling.checked)
disChecked = 1;
}
)
if (disChecked == 1) {
var profession = $("> ul > li", treeView().element)[nodeObj.ProfessionId];
treeView().nodeCheck(profession,
true);
}
else {
var profession = $("> ul > li", treeView().element)[nodeObj.ProfessionId];
treeView().nodeCheck(profession,
false);
}
 
 
}
 
}
 
 
}
 
function onChecked(e) {
 
var nodeObj = ParseNodes(e.item.innerHTML);
if (e.checked == false) {
$(
"#selectall").attr('checked',false);
}
//Acted on Profession check boxes
if (nodeObj.Type == 'P') {
// Repeat the Action on Disciplines
$(
"> ul > li > ul > li", treeView().element).each(
function (Index) {
var item = $("> ul > li > ul > li", treeView().element)[Index];
var nodesubObj = ParseNodes(item.innerHTML);
//Only those disciplines that are under select profession node.
if (nodesubObj.ProfessionId == nodeObj.ProfessionId)
treeView().nodeCheck(item, e.checked);
}
)
// Repeat the Action on STs
$(
"> ul > li > ul > li > ul > li", treeView().element).each(
function (Index) {
var item = $("> ul > li > ul > li > ul > li", treeView().element)[Index];
var nodesubObj = ParseNodes(item.innerHTML);
//Only those STs that are under selected profession node.
if (nodesubObj.ProfessionId == nodeObj.ProfessionId)
treeView().nodeCheck(item, e.checked);
 
 
}
)
}
//Acted on Discipline check boxes
else if (nodeObj.Type == 'D') {
// Repeat the Action on STs
$(
"> ul > li > ul > li > ul > li", treeView().element).each(
function (Index) {
var item = $("> ul > li > ul > li > ul > li", treeView().element)[Index];
var nodesubObj = ParseNodes(item.innerHTML);
//Only those STs that are under selected profession node.
if ((nodesubObj.DisciplineId == nodeObj.DisciplineId) && (nodesubObj.ProfessionId == nodeObj.ProfessionId))
treeView().nodeCheck(item, e.checked);
}
)
workOnParent(nodeObj, e.checked);
}
else if (nodeObj.Type == 'S') {
workOnParent(nodeObj, e.checked);
}
}
// function onLoad(e) {
//
// var nodeItem = e.item.innerHTML;
// var nodeValue = $('.t-checkbox > .t-input:hidden', nodeItem)[0].attributes('value').value;
// if (nodeValue == null)
// {
// $('#selectall').hide();
// }
// else {
// $('#selectall').show();
// }
// }
</
script>