Monday 1 December 2014

MVC4 Razor: How to bind the Checkboxlist from the database || How to create a CheckboxList in MVC4 Razor

Hi friends,in this article I will explain about How to bind the Checkboxlist from the database or How to create a CheckboxList in MVC4 Razor or How to implement Checkboxlist in MVC 4 Razor.
In this article we will go over implementing CheckBoxList in ASP.Net MVC 4 Razor.
Let’s try to understand this with an example. We will be using Courses table in this example as shown in the below figure.

The SQL scripts for creating Courses table and inserting data into it are following:
CREATE TABLE Courses (
  Course_ID int IDENTITY (1, 1) PRIMARY KEY,
  Course_Name varchar(50),
  Course_Duration int,
  IsSelected bit
)

INSERT INTO Courses (Course_Name, Course_Duration, IsSelected)
  VALUES ('ASP.NET', 45, 1)
INSERT INTO Courses (Course_Name, Course_Duration, IsSelected)
  VALUES ('C#', 45, 0)
INSERT INTO Courses (Course_Name, Course_Duration, IsSelected)
  VALUES ('VB.NET', 45, 1)
INSERT INTO Courses (Course_Name, Course_Duration, IsSelected)
  VALUES ('MVC', 45, 0)
INSERT INTO Courses (Course_Name, Course_Duration, IsSelected)
  VALUES ('JQuery', 45, 1)
INSERT INTO Courses (Course_Name, Course_Duration, IsSelected)
  VALUES ('WCF', 45, 0)

Add your connectionstring with name="con" in the web.config file.
Write the below code in the Model class.
Model(Users.cs):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;

namespace MvcCheckBoxList.Models
{
    public class Users
    {
        public int Course_ID { get; set; }
        public string Course_Name { get; set; }
        public int Course_Duration { get; set; }
        public bool IsSelected { get; set; }
        public static List<Users> getUsers()
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
            SqlCommand cmd = new SqlCommand("select * from Courses", con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            var users = new List<Users>(ds.Tables[0].Rows.Count);
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                var values = row.ItemArray;
                var user = new Users()
                {
                    Course_ID = (int)values[0],
                    Course_Name = (string)values[1],
                    Course_Duration=(int)values[2],
                    IsSelected = (bool)values[3]
                };
                users.Add(user);
            }
            return users;
        }
    }
}

Write the below code in the Controller class.
Controller(UserController.cs):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcCheckBoxList.Models;
using System.Data;
using System.Text;

namespace MvcCheckBoxList.Controllers
{
    public class UserController : Controller
    {
        public ActionResult UsersIndex()
        {
            List<Users> model = new List<Users>();
            model = Users.getUsers();
            return View(model);
        }
        [HttpPost]
        public ActionResult UsersIndex(List<Users> user)
        {
            if (user.Count(x => x.IsSelected) == 0)
            {
                ViewBag.msg = "You have not selected any Course";
                return View();
            }
            else
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("You have selected – ");
                foreach (Users usr in user)
                {
                    if (usr.IsSelected)
                    {
                        sb.Append(usr.Course_Name + ",");
                    }
                }
                sb.Remove(sb.ToString().LastIndexOf(","), 1);
                sb.Append(" Courses");
                ViewBag.msg = sb.ToString();
                return View(user);
            }
        }
    }
}

Write the below code in the view.
View(UsersIndex.cshtml):
@model List<MvcCheckBoxList.Models.Users>
@{
    ViewBag.Title = "Index";
  
}
<h5 style="color:Red">@ViewBag.msg</h5>
@if (string.IsNullOrEmpty(ViewBag.msg))
{
    using (Html.BeginForm("UsersIndex", "User", FormMethod.Post))
    {
        for (int i = 0; i < Model.Count; i++)
        {
        @Html.CheckBoxFor(m => m[i].IsSelected)
        @Html.Label(Model[i].Course_Name);
        @Html.HiddenFor(m => m[i].Course_Name);
        @Html.HiddenFor(m => m[i].Course_ID)
        <br />
        }
<div>  <input type="submit" value="Submit!" /></div>
    }
}
The output of the above code as shown in the below figure.

When you click on Submit button then corresponding selected items will show. 


You can download the code by clicking on the below Download image.

No comments:

Post a Comment

© 2012-2018 Aspdotnet-Kishore.blogspot.com. All Rights Reserved.
The content is copyrighted to Kishore and may not be reproduced on other websites without permission from the owner.