En mvc, controlador dentro de una tabla que se usa para buscar, ordenar y paginar. En esta sintaxis;
var cus = db.cus_general.AsQueryable();
cus = from x in db.cus_general
select x;
db.xxxxx => se refiere a una tabla de la base de datos; pero no use tablas múltiples.
en la página de vista: Soy creado externamente una clase de modelo. el nombre es el total de clientes que contiene;
pero no puedo implementar la búsqueda, ordenando entre este código
public ActionResult CustomerDetails(string search, string sort, string filter, int? page_no)
{
ViewBag.CurrentSortOrder = sort;
ViewBag.NameSortParam = sort == "name" ? "name_desc" : "name";
if (search != null)
{
page_no = 1;
}
else
{
search = filter;
}
ViewBag.FilterValue = search;
var cus = db.cus_general.AsQueryable();
cus = from x in db.cus_general
select x;
if (!String.IsNullOrEmpty(search))
{
cus = cus.Where(x =>
(x.cus_name.Contains(search)) ||
(x.cus_type.Contains(search)) ||
(x.cus_contact_detail.Contains(search))
);
}
switch (sort)
{
case "name_desc":
cus = cus.OrderByDescending(x => x.cus_name);
break;
case "name":
cus = cus.OrderBy(x => x.cus_name);
break;
case "search":
cus = cus.OrderBy(x => x.cus_id);
break;
default:
cus = cus.OrderBy(x => x.cus_id);
break;
}
int Size_Of_Page = 5;
int No_Of_Page = (page_no ?? 1);
return View(cus.ToPagedList(No_Of_Page, Size_Of_Page));
}
controlador:
public ActionResult VendorDetails(string search,string sort,string filter,int? page_no)
{
ViewBag.CurrentSortOrder = sort;
ViewBag.NameSortParam = sort == "name" ? "name_desc" : "name";
if (search != null)
{
page_no = 1;
}
else
{
search = filter;
}
ViewBag.FilterValue = search;
var ven = (from x in db.vendordetails
join y in db.ven_tax_information on x.ven_account equals y.ven_id
select new vendortotal()
{
ven_account=x.ven_account,
ven_type=x.ven_type,
ven_name =x.ven_name,
ven_group=x.ven_group,
city =x.city,
state=x.state,
country=x.country,
zipcode=x.zipcode,
contactname=x.contactname,
designation=x.designation,
contactno =x.contactno,
email=x.email,
tax_group =y.tax_group
});
if (!String.IsNullOrEmpty(search))
{
ven = ven.Where(x =>
(x.ven_name.Contains(search)) ||
(x.ven_type.Contains(search)) ||
(x.contactname.Contains(search))
);
}
switch (sort)
{
case "name_desc":
ven = ven.OrderByDescending(x => x.ven_name);
break;
case "name":
ven = ven.OrderBy(x => x.ven_name);
break;
case "search":
ven = ven.OrderBy(x => x.ven_account);
break;
default:
ven = ven.OrderBy(x => x.ven_account);
break;
}
int Size_Of_Page = 5;
int No_Of_Page = (page_no ?? 1);
return View(ven.ToPagedList(No_Of_Page, Size_Of_Page));
}
Clase de modelo (modelo personalizado) dos valores de tabla en una clase de modelo personalizado
public class vendortotal
{
public int ven_account { get; set; }
public string ven_type { get; set; }
public string ven_name { get; set; }
public string ven_group { get; set; }
public string ven_add1 { get; set; }
public string ven_add2 { get; set; }
public string city { get; set; }
public string state { get; set; }
public string country { get; set; }
public int zipcode { get; set; }
public string contactname { get; set; }
public string designation { get; set; }
public string contactno { get; set; }
public string email { get; set; }
public int tax_reg_num { get; set; }
public string tax_group { get; set; }
public string tax_code { get; set; }
public string term_exempt { get; set; }
public int pan { get; set; }
public string tin_tan { get; set; }
}
vista
@model IPagedList<Profitmain.Models.vendortotal>
@using PagedList.Mvc;
@using PagedList;
<table id="datatable-tabletools" class="table table-striped table-bordered" border="1" cellspacing="0" width="100">
@if (Model.Count() == 0)
{
<tr>
<td colspan="4">no rows match search criteria</td>
</tr>
}
else
{
<tr>
<th>Vendor Account</th>
<th>Vendor Type</th>
<th>
Vendor Details
<a href='@Url.Action("vendordetails", new { sort = ViewBag.NameSortParam, search = Request["search"] })'>
<img src='@Url.Content("/monarch/assets/image-resources/arrows.jpg")' width="12" height="12" />
</a>
</th>
<th>Group</th>
<th>City</th>
<th>State</th>
<th>Country</th>
<th>ZipCode</th>
<th>Contact Name</th>
<th>Designation</th>
<th>Contact No</th>
<th>Email</th>
<th>tax group</th>
<th>Action</th>
</tr>
foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.ven_account)
</td>
<td>
@Html.DisplayFor(modelItem => item.ven_type)
</td>
<td>
@Html.DisplayFor(modelItem => item.ven_name)
</td>
<td>
@Html.DisplayFor(modelItem => item.ven_group)
</td>
<td>
@Html.DisplayFor(modelItem => item.city)
</td>
<td>
@Html.DisplayFor(modelItem => item.state)
</td>
<td>
@Html.DisplayFor(modelItem => item.country)
</td>
<td>
@Html.DisplayFor(modelItem => item.zipcode)
</td>
<td>
@Html.DisplayFor(modelItem => item.contactname)
</td>
<td>
@Html.DisplayFor(modelItem => item.designation)
</td>
<td>
@Html.DisplayFor(modelItem => item.contactno)
</td>
<td>
@Html.DisplayFor(modelItem => item.email)
</td>
<td>
@Html.DisplayFor(modelItem => item.tax_group)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ven_account }) |
@Html.ActionLink("Details", "Details", new { id = item.ven_account }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ven_account })
</td>
</tr>
}}
</table>
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras