Reputation: 19
I'm just starting to teach myself C# and ASP - I'm currently developing a simple WebApp at work to maintain a list and ensure that entries are up to date.
I have used the database first approach with Entity Framework in order to get it all linked and its loading & editing data without a problem.
I have tried to add sorting & searching; which I had done successfully but I had to backtrack some of my work and now the sort/search functionality aren't working. I think I know where the problem is but no clue how to fix!!
Spent hours yesterday trying to fix it with no luck so thought I'd try my luck here.
Models file structure: Models > Loggers.edmx > Loggers.tt > Logger_Name.cs.
public partial class Logger_Name
{
public int Serial { get; set; }
public string Friendly_Name { get; set; }
public string Site { get; set; }
public string tSiteCode { get; set; }
public string aSiteCode { get; set; }
}
picture of edmx diagram with names
Controllers
public class LoggersController : Controller
{
private REDHHP_DEVEntities db = new REDHHP_DEVEntities();
// GET: Loggers
public ActionResult Index(string sortOrder, string searchString)
{
ViewBag.NameSortParm = sortOrder == "friendly_name_asc" ? "friendly_name_desc" : "friendly_name_asc";
ViewBag.SiteSortParm = sortOrder == "site_asc" ? "site_desc" : "site_asc";
ViewBag.CodeSortParm = sortOrder == "site_code_asc" ? "site_code_desc" : "site_code_asc";
ViewBag.SerialSortParm = sortOrder == "serial_asc" ? "serial_desc" : "serial_asc";
var loggerz = from s in db.Logger_Entity
select s;
if (!String.IsNullOrEmpty(searchString))
{
loggerz = loggerz.Where(s => s.Friendly_Name.Contains(searchString)
|| s.Site.Contains(searchString)
|| s.tSiteCode.Contains(searchString));
}
switch (sortOrder)
{
case "site_desc":
loggerz = loggerz.OrderByDescending(s => s.Site);
break;
case "friendly_name_desc":
loggerz = loggerz.OrderByDescending(s => s.Friendly_Name);
break;
case "fite_code_desc":
loggerz = loggerz.OrderByDescending(s => s.tSiteCode);
break;
case "site_asc":
loggerz = loggerz.OrderBy(s => s.Site);
break;
case "friendly_name_asc":
loggerz = loggerz.OrderBy(s => s.Friendly_Name);
break;
case "site_code_asc":
loggerz = loggerz.OrderBy(s => s.tSiteCode);
break;
case "serial_desc":
loggerz = loggerz.OrderByDescending(s => s.Serial);
break;
case "serial_asc":
loggerz = loggerz.OrderBy(s => s.Serial);
break;
default:
loggerz = loggerz.OrderBy(s => s.Site);
break;
}
return View(db.Logger_Entity.ToList());
}
I have a strong hunch that the problem is with this bit:
var loggerz = from s in db.Logger_Entity
select s;
Any help is greatly appreciated!
Upvotes: 0
Views: 61
Reputation: 30022
That's one silly mistake. You're returning the original database list without filtering or ordering:
return View(db.Logger_Entity.ToList());
should be :
return View(loggerz.ToList());
Upvotes: 1