In this article I will explain with an example, how to highlight row of
WebGrid on
MouseOver (Mouse Hover) using CSS in
ASP.Net MVC Razor.
Database
Here I am making use of Microsoft’s Northwind Database. You can download it from here.
Entity Framework Model
Once the
Entity Framework is configured and connected to the database table, the Model will look as shown below.
Controller
The Controller consists of the following Action method.
Action method for handling GET operation
The
Entity Framework is now configured and hence now we can create a Controller and write code to fetch the records from the
Customers Table of the
Northwind Database.
Inside this Action method, the Customer records are fetched using
Entity Framework and returned to the View.
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
NorthwindEntities entities = new NorthwindEntities();
return View(entities.Customers.ToList());
}
}
View
HTML Markup
Inside the View, in the very first line the Customer Entity is declared as IEnumerable which specifies that the Model will be available as a Collection.
The
WebGrid is initialized with the Model i.e.
IEnumerable collection of
Customer Entity class objects as source.
The
WebGrid is created using the
GetHtml method with the following parameters.
HtmlAttributes – It is used to set the
HTML attributes to the
HTML Table generated by
WebGrid such as ID, Name, Class, etc.
Columns – It is used to specify the columns to be displayed in
WebGrid and also allows to set specific
Header Text for the columns.
The
RowStyle and
AlternatingRowStyle properties of the
WebGrid are assigned a CSS class named
row. This CSS class is applied to all the TR elements of the
WebGrid rows except
Header and
Pager rows.
When the mouse enters a TR element, all the background color of all the TD elements belonging to the TR element are changed.
@model IEnumerable<WebGrid_Row_Highlight_MVC.Customer>
@{
Layout = null;
WebGrid webGrid = new WebGrid(source: Model, canSort: false);
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<style type="text/css">
body { font-family: Arial; font-size: 10pt; }
.Grid { border: 1px solid #ccc; border-collapse: collapse; }
.Grid th { background-color: #F7F7F7; font-weight: bold; }
.Grid th, .Grid td { padding: 5px; border: 1px solid #ccc; }
.Grid, .Grid table td { border: 0px solid #ccc; }
.Grid th a,.Grid th a:visited { color: #333; }
.Grid .row:hover td { background-color: gold; cursor: pointer; }
</style>
</head>
<body>
@webGrid.GetHtml(
rowStyle: "row",
alternatingRowStyle: "row",
htmlAttributes: new { @id = "WebGrid", @class = "Grid" },
columns: webGrid.Columns(
webGrid.Column("CustomerID", "Customer Id"),
webGrid.Column("ContactName", "Customer Name"),
webGrid.Column("City", "City"),
webGrid.Column("Country", "Country")
))
</body>
</html>
Screenshot
Downloads