I want to show Components in a tabs , so first of all create few components. In this project we have three components, First View Component public class AllViewComponent : ViewComponent { private readonly UserManager<ApplicationUser> _userManager; public AllViewComponent(UserManager<ApplicationUser> userManager) { _userManager = userManager; } public async Task<IViewComponentResult> InvokeAsync() { List<StudentViewModel> allUsers = new List<StudentViewModel>(); var items = await _userManager.Users.ToListAsync(); foreach (var item in items) { allUsers.Add(new StudentViewModel {Id=item.Id, EnrollmentNo = item.EnrollmentNo, FatherName = item.FatherName, Name = item.Name, Age = item.Age, Birthdate = item.Birthdate, Address = item.Address, Gender = item.Gender, Email = item.Email }); }
models
public class City
{
public int Id { get; set; }
public string Name { get; set; }
public int StateId { get; set; }
public virtual State State { get; set; }
}
public class State
{
public int Id { get; set; }
public string Title { get; set; }
public virtual List<City> City { get; set; }
}
public class TreeViewNode
{
public string id { get; set; }
public string parent { get; set; }
public string text { get; set; }
}
Controller Code
[HttpGet]public IActionResult Index()
{
List<TreeViewNode> nodes = new List<TreeViewNode>();
//Loop and add the Parent Nodes.
foreach (State type in _context.State)
{
nodes.Add(new TreeViewNode { id = type.Id.ToString(), parent = "#", text = type.Title });
}
//Loop and add the Child Nodes.
foreach (City subType in _context.City)
{
nodes.Add(new TreeViewNode { id = subType.StateId.ToString() + "-" + subType.Id.ToString(), parent = subType.StateId.ToString(), text = subType.Name });
}
//Serialize to JSON string.
ViewBag.Json = JsonConvert.SerializeObject(nodes);
return View();
}
[HttpPost]
public ActionResult Index(string selectedItems)
{
List<TreeViewNode> items = JsonConvert.DeserializeObject<List<TreeViewNode>>(selectedItems);
return RedirectToAction("Index");
}
cshtml file
<div id="jstree">
</div>
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<input type="hidden" name="selectedItems" id="selectedItems" />
<input type="submit" value="Submit" />
}
@section scripts{
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" />
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script>
<script type="text/javascript">
$(function () {
$('#jstree').on('changed.jstree', function (e, data) {
var i, j;
var postedItems = [];
for(i = 0, j = data.selected.length; i < j; i++) {
//Fetch the Id.
var id = data.selected[i];
//Remove the ParentId.
if(id.indexOf('-') != -1){
id = id.split("-")[1];
}
//Add the Node to the JSON Array.
postedItems.push({
text: data.instance.get_node(data.selected[i]).text,
id: id,
parent: data.node.parents[0]
});
}
//Serialize the JSON Array and save in HiddenField.
$('#selectedItems').val(JSON.stringify(postedItems));
}).jstree({
"core": {
"themes": {
"variant": "large"
},
"data": @Html.Raw(ViewBag.Json)
},
"checkbox": {
"keep_selected_style": false
},
"plugins": ["wholerow", "checkbox"],
});
});
</script>
}
Thank you for great information. it is very helpful.
ReplyDeletebest computer programming services
best software development services
Nice Post . Keep sharing more and more web design services
ReplyDeleteweb design company
Thank You Really Helpful. How do we create multi level treeview such as parent child and superchild?
ReplyDeleteOutstanding work author. Knowledgeable enough. We will surely share your work. Anyway, If you are interested and looking for website development you may visit this website.
ReplyDeleteInwizards
Hire Xamarin developer
Hire Blazor developer
Hire ABP,io Developer
i love your article thanks for sharing this
ReplyDeleteIUCN ki Full Form Kya Hai?
Fiber Optics Cable Kya Hai?