Reputation: 2175
Hi I am developing application where i have 5 textboxes and search button. When i enter data into textbox and click on search, corresponding matched data of database will be displayed in below table. I have implemented paging and it works fine. Below is the code.
[HttpGet]
public ActionResult Index(int? clientId, string dateofAction, int? doc_typeid, string employeeID,string citizenId,int? currentFilter, string filterdateTime,int? filterdocType,string filteredemployeeID,string filteredcitizenId,int? page)
{
ViewBag.curpageNumber = page;
logDetailsEnumeration model = new logDetailsEnumeration();
DB_KYC3Entities db = new DB_KYC3Entities();
var docTypes = from c in db.tm_doc_type select c;
if (clientId != null)
{
page = 1;
}
else
{
clientId = currentFilter;
}
if(dateofAction!=null)
{
page = 1;
}
else
{
dateofAction = filterdateTime;
}
if(doc_typeid != null)
{
page = 1;
}
else
{
doc_typeid = filterdocType;
}
if(employeeID!=null)
{
page = 1;
}
else
{
employeeID = filteredemployeeID;
}
if(citizenId!=null)
{
page = 1;
}
else
{
citizenId = filteredcitizenId;
}
ViewBag.CurrentFilter = clientId;
ViewBag.filterdateTime = dateofAction;
int pageSize = 8;
int pageNumber = (page ?? 1);
VerificationLogBAL obj = new VerificationLogBAL();
int docType = obj.GetDocDetails(doc_typeid?? default(int));
List<logDetails> logDetails = obj.getlogDetails(clientId?? default(int), dateofAction, docType, employeeID, citizenId);
IPagedList<logDetails> pagedLog = logDetails.ToPagedList(pageNumber, pageSize);
model = new logDetailsEnumeration()
{
pageNum= pageNumber,
doc_typeid = doc_typeid,
Count=logDetails.Count,
employeeID = employeeID,
citizenId= citizenId,
logDetails = pagedLog,
doctype_name=new SelectList(docTypes, "doc_typeid", "doctype_name")
};
return View("Index",model);
}
}
This is my view code.
@using (Html.BeginForm("Index", "VerificationLog", FormMethod.Get))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="message"></div>
<div class="loginUsernamePassword">
<i class="fa fa-user"></i>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="dataTable tableHover">
<tr>
<th width="8%" scope="col">Client ID</th>
<th width="20%" scope="col">
<div class="form-box form-box-default">
@Html.TextBoxFor(x=>x.clientId, ViewBag.CurrentFilter as string, new { @id = "clientId", @placeholder = "Client ID", @class = "form-control", @maxlength = 20 })
</div>
</th>
<th width="10%" scope="col">Date Of Action</th>
<th width="20%" scope="col">
<div class="form-box form-box-default">
@Html.TextBoxFor(x=>x.dateofAction, ViewBag.filterdateTime as string, new { @id = "dateofAction", @placeholder = "Date Of Action", @class = "txtBox form-control calender validate[required]" })
@*@Html.TextBox("dateofAction", ViewBag.filterdateTime as string, new { @id = "dateofAction", @placeholder = "Date Of Action", @class = "txtBox form-control calender validate[required]" })*@
</div>
</th>
<th width="15%" scope="col">Type Of Document</th>
<th width="17%" scope="col">
<div class="form-box form-box-default">
@*@Html.TextBox("typeofDocument", ViewBag.filterdateTime as string, new { @id = "typeofDocument", @placeholder = "Type Of Document", @class = "form-control", @maxlength = 20 })*@
@Html.DropDownListFor(x=>x.doc_typeid,Model.doctype_name,"Select",new { @class = "form-control" })
</div>
</th>
</tr>
<tr>
<th width="15%" scope="col">Employee ID</th>
<th width="17%" scope="col">
<div class="form-box form-box-default">
@Html.TextBoxFor(x=>x.employeeID, Model.employeeID, new { @id = "employeeID", @placeholder = "Employee ID", @class = "form-control", @maxlength = 20 })
</div>
</th>
<th width="15%" scope="col">Citizen ID</th>
<th width="17%" scope="col">
<div class="form-box form-box-default">
@Html.TextBoxFor(x=>x.citizenId, Model.citizenId, new { @id = "citizenId", @placeholder = "Citizen ID", @class = "form-control", @maxlength = 20 })
</div>
</th>
<th width="10%" scope="col" colspan="2">
<input type="submit" value="Search" class="btn btn-primary btn-cons search" />
</tr>
</table>
</div>
}
</div>
@if (Model != null && Model.logDetails.Count != 0)
{
<br />
<h2>Verification Log</h2>
<br />
<div id="GridDetails">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="dataTable tableHover">
<tr>
@*<th>@Html.ActionLink("Label", "Index", new { sortOrder = ViewBag.LabelSortParm, currentFilter = ViewBag.CurrentFilter, filterdateTime = ViewBag.filterdateTime, filterdocType = Model.doc_typeid, filteredemployeeID = Model.employeeID, filteredcitizenId = Model.citizenId, Page = ViewBag.curpageNumber })</th>*@
<th>Label</th>
<th>Value</th>
<th>UpdatedOn</th>
<th>UpdatedBy</th>
<th>UpdatedStatus</th>
<th>RejectComment</th>
</tr>
@foreach (var group in Model.logDetails)
{
<tr>
<td>@group.contentLabel</td>
<td>@group.contentValue</td>
<td>@group.updatedOn</td>
<td>@group.updatedBy</td>
<td>@group.updatedStatus</td>
<td>@group.rejectComment</td>
</tr>
}
</table>
@Html.PagedListPager(Model.logDetails, page => Url.Action("Index",
new { page, currentFilter = ViewBag.CurrentFilter, filterdateTime=ViewBag.filterdateTime, filterdocType= Model.doc_typeid, filteredemployeeID = Model.employeeID, filteredcitizenId = Model.citizenId }))
Page @(Model.logDetails.PageCount < Model.logDetails.PageNumber ? 0 : Model.logDetails.PageNumber) of @Model.logDetails.PageCount
</div>
I am having problem in displaying message No records found. If i try to put No records found by checking following property if(Model!=null) then When the first time page loads then also it display No records found. I want to display only after clicking on submit button and if there are no matching records found. Is there any way I can implement solution in above scenario? Thanks
Upvotes: 1
Views: 62
Reputation: 12904
You could add a new property to the model that would only be set when the search has been completed. This would indicate if there were no records found and you could use logic in the view to display an appropriate message.
Upvotes: 2