protected override void WriteHtml(HtmlTextWriter writer) { Guard.IsNotNull(writer, "writer"); if (DragAndDrop.Enabled) { ScriptFileNames.Insert(1, "telerik.draganddrop.js"); } ITreeViewHtmlBuilder builder = builderFactory.Create(this); IHtmlNode treeViewTag = builder.TreeViewTag(); if (Items.Any()) { if (SelectedIndex != -1 && Items.Count < SelectedIndex) { throw new ArgumentOutOfRangeException(TextResource.IndexOutOfRange); } //this loop is required because of SelectedIndex feature. if (HighlightPath) { Items.Each(HighlightSelectedItem); } Items.Each((item, index) => { if (!this.isPathHighlighted) { if (index == this.SelectedIndex) { item.Selected = true; if (item.Items.Any() || item.Template.HasValue()) { item.Expanded = true; } } } if (item.LoadOnDemand) { item.Expanded = false; } if (ExpandAll) { ExpandAllChildrens(item); } if (string.IsNullOrEmpty(item.Value)) { item.Value = item.Text; } WriteItem(item, treeViewTag.Children[0], builder); }); } treeViewTag.WriteTo(writer); base.WriteHtml(writer); }