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
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
namespace TestGrid.Controllers
{
public class HomeController : Controller
{
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
@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.