Hi friends, in this article I will explain about How to Update multiple rows at once Using MVC 4 Razor and Entity Framework.
I already explained in the previous articles about MVC 4 Razor: Delete multiple rows in WebGrid with CheckBox selection and with confirmation in ASP.NET using C#.NET, MVC 4 Razor: How to Select / Deselect All Checkboxes inside a Webgrid in ASP.NET Application using C#.NET and MVC 4 Razor: Frozen Rows and Columns Webgrid Using jQuery Like Excel Sheet
For this I created one USERS table and insert the values like as shown in the below figure.
SQL Script for USERS Table
CREATE TABLE USERS (
User_id int IDENTITY (1, 1) PRIMARY KEY,
UserName varchar(100),
Gender varchar(10),
Address varchar(200)
)
INSERT INTO USERS (UserName, Gender, Address)
VALUES ('Kishore', 'Male', 'XXXXXXXX')
INSERT INTO USERS (UserName, Gender, Address)
VALUES ('Satyam', 'Male', 'XXXXXXXX')
INSERT INTO USERS (UserName, Gender, Address)
VALUES ('Rithvika', 'Female', 'XXXXXXXX')
INSERT INTO USERS (UserName, Gender, Address)
VALUES ('SaiR', 'Female', 'XXXXXXXX')
INSERT INTO USERS (UserName, Gender, Address)
VALUES ('SambhaShiva', 'Male', 'XXXXXXXX')
|
First we need to create a project.
Go to Menu File > New > Project > select ASP.NET MVC 4 web application > Entry Application Name > Click OK.
Go to Solution Explorer > Right Click on Project name form Solution Explorer > Add > New item > Select ADO.NET Entity Data Model under data > Enter model name > Add.
A popup window will come (Entity Data Model Wizard) > Select Generate from database > Next >Chose your data connection > select your database > next > Select tables > enter Model Namespace > Finish.
Controller(UserController.cs):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcUpdateMultipleRows.Models;
namespace MvcUpdateMultipleRows.Controllers
{
public class UserController : Controller
{
public ActionResult Index()
{
List<USER> userModel = new List<USER>();
MvcDBEntities db = new MvcDBEntities();
userModel = db.USERS.ToList();
return View(userModel);
}
[HttpPost]
public ActionResult Index(List<USER> userList)
{
if (ModelState.IsValid)
{
using (MvcDBEntities db = new MvcDBEntities())
{
foreach (var i in userList)
{
var userRows = db.USERS.Where(a => a.User_id.Equals(i.User_id)).FirstOrDefault();
if (userRows != null)
{
userRows.UserName = i.UserName;
userRows.Gender = i.Gender;
userRows.Address = i.Address;
}
}
db.SaveChanges();
}
ViewBag.Message = "Records have been Updated Successfully.";
return View(userList);
}
else
{
ViewBag.Message = "Failed ! Please try again.";
return View(userList);
}
}
}
}
|
View(Index.cshtml):
@model List<MvcUpdateMultipleRows.Models.USER>
@{
ViewBag.Title = "How to Update multiple rows at once Using MVC 4 Razor and Entity Framework";
}
<script type="text/javascript">
function ConfirmUpdate() {
return confirm("Do you want to Update the records.");
}
</script>
@using (@Html.BeginForm("Index", "User", FormMethod.Post))
{
<table>
<tr>
<th>
</th>
<th>
User Name
</th>
<th>
Gender
</th>
<th>
Address
</th>
</tr>
@for (int i = 0; i < Model.Count; i++)
{
<tr>
<td>@Html.HiddenFor(model => model[i].User_id)
</td>
<td>@Html.EditorFor(model => model[i].UserName)
</td>
<td>@Html.EditorFor(model => model[i].Gender)
</td>
<td>@Html.EditorFor(model => model[i].Address)
</td>
</tr>
}
</table>
<p>
<input type="submit" value="Update" onclick="javascript:return ConfirmUpdate();" /></p>
<p style="color: green; font-size: 12px;">
@ViewBag.Message
</p>
}
|
The output of the above code as shown in the below figure.
When you update the rows and click on Update button then it will show the confirm message as "Do you want to Update the Records".If you click on "Yes" then record(s) will updated.
After updating the records it will show Records has been Updated Successfully.
ThankQ very much, it helped me a lot
ReplyDelete