Thursday, March 7, 2013

SelectMethod in ASP.NET 4.5 Model binding

New version of ASP.NET provides lots of way of binding data to the data controls like Grid View, Repeater etc. You can now bind this controls with strong type. I have earlier written a blog post about How we can use Model binding with ASP.NET 4.5 and Visual Studio 2012.

SelectMethod in ASP.NET 4.5:


In asp.net 4.5, It is also possible to bind controls with SelectMethod attribute. This method specify the data that you want to bind with data controls like grid view and repeater controls.

So what we are waiting for?? Let’s take an simple example. I have create a basic model class “Employee” like below.
public class Employee
{
    public int EmployeeId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
This class contains three properties EmployeeId,FirstName and LastName. Now I have created one method to get a generic list of employee model like following.

public List<Employee> GetEmployees()
{
    List<Employee> employeeList = new List<Employee>();
    for (int i = 1; i <= 5; i++)
    {
        employeeList.Add(new Employee { 
            EmployeeId=i,
            FirstName=string.Format("First{0}",i),
            LastName=string.Format("Last{0}",i)
        });
    }
    return employeeList;
}
Here you can see it will list of five employee. For this example I have created the employee list but you can replace with your database model.

Now it’s time to use “SelectMethod” attribute like following.
<asp:GridView ID="grdEmployee" runat="server" SelectMethod="GetEmployees"
     ItemType="WebApplication2.Employee">
</asp:GridView>

Here, you can see that I putted GetEmployee method as SelectMethod attribute and ItemType  attribute is my model Employee. Let’s run that example. Below is the out put as expected.

SelectMethod

SelectMethod filtering:


You can also do the filtering with the Select Method very easily. Here to demonstrate the filtering let’s take a dropdown list  control like following and based on the dropdown list control selected item we will filter our grid view with select method. Following is a HTML code for this.

<form id="form1" runat="server">
<div>
    <asp:DropDownList ID="ddlEmployee" AutoPostBack="true" runat="server">
            <asp:ListItem Text="1"></asp:ListItem>
            <asp:ListItem Text="2"></asp:ListItem>
    </asp:DropDownList>
</div>
<div>
    <asp:GridView ID="grdEmployee" runat="server" SelectMethod="GetEmployees" ItemType="WebApplication2.Employee">
    </asp:GridView>
</div>
</form>

Now let’s modify our GetEmployees method like following to filter based on dropdownlist control.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.ModelBinding;

namespace WebApplication2
{
    public partial class WebForm1 : System.Web.UI.Page
    {

        public List<Employee> GetEmployees([Control]int? ddlEmployee)
        {
            List<Employee> employeeList = new List<Employee>();
            for (int i = 1; i <= 5; i++)
            {
                employeeList.Add(new Employee { 
                    EmployeeId=i,
                    FirstName=string.Format("First{0}",i),
                    LastName=string.Format("Last{0}",i)
                });
            }
            return employeeList.Where(e=>e.EmployeeId==ddlEmployee).ToList();
        }
    }
}

Here you can see that I have added parameter with ddlEmployee with INT Type.  And also if you see I have used  System.Web.ModelBinding namespace to use that parameter as control attribute. This does all the trick and it will filter based on the dropdownlist selection.

Now let’s run the example again.

Select method filtering in asp.net 4.5 Model binding

Same way if you select “2” it will have output as following.

Select method filtering in asp.net 4.5 Model binding

So, Here you can see we can easily create a filtering with ‘Select Method’ also. it’s very easy to use. Hope you like it. Stay tuned for more..

Share:

7 comments:

Your feedback is very important to me. Please provide your feedback via putting comments.

About Me
My Photo

Full Stack Developer,Blogger,Microsoft Mvp, Mentor, Life long learner, 10+ Years of Experience for JavaScript, web and Microsoft technologies. ASP.NET MVC,Web Forms,C#,AngularJs,Golang
Mvp profile
Subscribe to my blog

Enter your email address:

Follow us on facebook
Blog Archive
Total Pageviews