Click here to Skip to main content
15,885,032 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I have a MVC 4 application with razor engine. I want to add a search function to my view which show a list of teachers. The view is strongly typed view.

My Models is : Teacher.cs
C#
namespace TestGrid.Models
{
    public class Teachers
    {
        private String _TeacherName;
        private int _TeacherID, _StdID;
        private string ConString = @"Data Source=ztpl-dt-0001\;Initial Catalog=TestSanket;User ID=sa;Password=zenopsys123";
        DataSet ds;

        public string TeacherName
        {
            set { _TeacherName = value; }
            get { return _TeacherName; }
        }

        public int TeacherID
        {
            set { _TeacherID = value; }
            get { return _TeacherID; }
        }
        public int StdID
        {
            set { _StdID = value; }
            get { return _StdID; }
        }

        public DataTable GetTeacherList()
        {
            ds = new DataSet();
            SqlConnection con = new SqlConnection(ConString);
            SqlDataAdapter sda = new SqlDataAdapter("select TeacherId,TeacherName,StandardId from Teacher", con);
            try
            {
                sda.Fill(ds);
                return ds.Tables[0];
            }
            catch
            {
                return null;
            }

        }
       public DataTable GetTeacher(int TeacherId)
        {
            ds = new DataSet();
            SqlConnection con = new SqlConnection(ConString);
            SqlDataAdapter sda = new SqlDataAdapter("select TeacherId,TeacherName,StandardId from Teacher where TeacherId = " + TeacherId, con);
            try
            {
                sda.Fill(ds);
                return ds.Tables[0];
            }
            catch
            {
                return null;
            }
        }
    }
}

My Controller is HomeController.cs
C#
namespace TestGrid.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult TeacherList()
        {
            DataTable dt = new DataTable();
            Models.Teachers obj = new Models.Teachers();
            dt = obj.GetTeacherList();
            List<models.teachers> Records = new List<models.teachers>();
            foreach(DataRow dr in dt.Rows)
            {
                Models.Teachers T=new Models.Teachers();
                T.TeacherID = Convert.ToInt32(dr["TeacherId"]);
                T.StdID = Convert.ToInt32(dr["StandardId"]);
                T.TeacherName = dr["TeacherName"].ToString();
                Records.Add(T);
            }
            return View(Records);
        }
        
        public ActionResult TeacherDetails(int Id)
        {
            DataTable dt = new DataTable();
            Models.Teachers obj = new Models.Teachers();
            dt = obj.GetTeacher(Id);

            List<models.teachers> Record = new List<models.teachers>();


            Models.Teachers Teacher = new Models.Teachers();
            Teacher.TeacherID = Convert.ToInt32(dt.Rows[0]["TeacherId"]);
            Teacher.TeacherName = dt.Rows[0]["TeacherName"].ToString();
            Teacher.StdID = Convert.ToInt32(dt.Rows[0]["StandardID"].ToString());
            Record.Add(Teacher);
            return View(Record[0]);
        }
        public ActionResult EditList(int Id)
        {
            DataTable dt = new DataTable();
            Models.Teachers obj = new Models.Teachers();
            dt = obj.GetTeacher(Id);

            List<models.teachers> Record = new List<models.teachers>();


            Models.Teachers Teacher = new Models.Teachers();
            Teacher.TeacherID = Convert.ToInt32(dt.Rows[0]["TeacherId"]);
            Teacher.TeacherName = dt.Rows[0]["TeacherName"].ToString();
            Teacher.StdID = Convert.ToInt32(dt.Rows[0]["StandardID"].ToString());
            Record.Add(Teacher);
            return View(Record[0]);
        }
    }
}



My strongly typed view which displays list of teachers is: TeacherList.cshtml
C#
@model IEnumerable<testgrid.models.teachers>

@{
    ViewBag.Title = "TeacherList";
}


TeacherList


<script type="text/javascript">
$(function () {
$('#edit').click(function () {
var name = $('#Name').val();
this.href = this.href + '?Name=' + encodeURIComponent(name);
});
});
</script>


@Html.ActionLink("Create New", "Create")





<input id="Name" type="text" value="" />
@Html.ActionLink("Search", "TeacherList", null, new { Name = "edit" });



@foreach (var item in Model)
{
}

@Html.DisplayNameFor(model => model.TeacherName)
@Html.DisplayNameFor(model => model.TeacherID)
@Html.DisplayNameFor(model => model.StdID)
@Html.DisplayFor(modelItem => item.TeacherName)
@Html.DisplayFor(modelItem => item.TeacherID)
@Html.DisplayFor(modelItem => item.StdID)
@Html.ActionLink("Edit", "EditList", new { id = item.TeacherID }) |
@Html.ActionLink("Details", "TeacherDetails", new { id = item.TeacherID }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })





Plss give me suggestion how to add a textbox to accept user input and search the single record and show it in this view itself.
Posted
Updated 23-Oct-13 23:53pm
v3
Comments
[no name] 24-Oct-13 6:26am    
use ajax to send search string to action(and return json data) and bind data in Html element(like div,field..) List

1 solution

Throw all this out and use Entity Framework instead. That makes it even easier to write code to search your database.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900