2012-08-22 8 views
0

서버 정보를 표시하는 ASP.Net MVC 웹 페이지를 구축 중입니다. 또한 Management Studio를 사용하지 않고도 각 서버의 소유자를 편집 할 수 있습니다.ASP.NET에서 필터링 옵션을 어떻게 추가합니까?

잘 작동하지만, 내가 선택한 ServerNames를 볼 수 있도록 필터링 기능을 추가하려고합니다 (머리글에 필터 기능을 구현 한 후에 Excel 스프레드 시트를 필터링하는 방법). 내가 서버에서 데이터베이스를 연결하고, 내가 표시하고있는 정보는 3 개 개의 다른 테이블에서입니다 :

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/advanced-entity-framework-scenarios-for-an-mvc-web-application

일부 추가 정보 :

나는 다음 자습서를 사용하고있다.

도움을 주시면 대단히 감사하겠습니다.

using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Data.Entity; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using SQL_Server_Inventory_UI; 

namespace SQL_Server_Inventory_UI.Controllers 
{ 
    public class ServerListController : Controller 
    { 
     private ServerListConnectionEntities db = new ServerListConnectionEntities(); 

    // 
    // GET: /ServerList/ 

    public ViewResult Index() 
    { 
     var serverlists = db.ServerLists.Include("Server_Group").Include("TeamMember"); 
     return View(serverlists.ToList()); 
    } 

    // 
    // GET: /ServerList/Details/5 

    public ViewResult Details(int id) 
    { 
     ServerList serverlist = db.ServerLists.Single(s => s.ServerId == id); 
     return View(serverlist); 
    } 

    // 
    // GET: /ServerList/Create 

    public ActionResult Create() 
    { 
     ViewBag.GroupID = new SelectList(db.Server_Group, "GroupID", "GroupName"); 
     ViewBag.OwnerID = new SelectList(db.TeamMembers, "MemberID", "Name"); 
     return View(); 
    } 

    // 
    // POST: /ServerList/Create 

    [HttpPost] 
    public ActionResult Create(ServerList serverlist) 
    { 
     if (ModelState.IsValid) 
     { 
      db.ServerLists.AddObject(serverlist); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     ViewBag.GroupID = new SelectList(db.Server_Group, "GroupID", "GroupName", serverlist.GroupID); 
     ViewBag.OwnerID = new SelectList(db.TeamMembers, "MemberID", "Name", serverlist.OwnerID); 
     return View(serverlist); 
    } 

    // 
    // GET: /ServerList/Edit/5 

    public ActionResult Edit(int id) 
    { 
     ServerList serverlist = db.ServerLists.Single(s => s.ServerId == id); 
     ViewBag.GroupID = new SelectList(db.Server_Group, "GroupID", "GroupName", serverlist.GroupID); 
     ViewBag.OwnerID = new SelectList(db.TeamMembers, "MemberID", "Name", serverlist.OwnerID); 
     return View(serverlist); 
    } 

    // 
    // POST: /ServerList/Edit/5 

    [HttpPost] 
    public ActionResult Edit(ServerList serverlist) 
    { 
     if (ModelState.IsValid) 
     { 
      db.ServerLists.Attach(serverlist); 
      db.ObjectStateManager.ChangeObjectState(serverlist, EntityState.Modified); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     ViewBag.GroupID = new SelectList(db.Server_Group, "GroupID", "GroupName", serverlist.GroupID); 
     ViewBag.OwnerID = new SelectList(db.TeamMembers, "MemberID", "Name", serverlist.OwnerID); 
     return View(serverlist); 
    } 

    // 
    // GET: /ServerList/Delete/5 

    public ActionResult Delete(int id) 
    { 
     ServerList serverlist = db.ServerLists.Single(s => s.ServerId == id); 
     return View(serverlist); 
    } 

    // 
    // POST: /ServerList/Delete/5 

    [HttpPost, ActionName("Delete")] 
    public ActionResult DeleteConfirmed(int id) 
    {    
     ServerList serverlist = db.ServerLists.Single(s => s.ServerId == id); 
     db.ServerLists.DeleteObject(serverlist); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    protected override void Dispose(bool disposing) 
    { 
     db.Dispose(); 
     base.Dispose(disposing); 
    } 
} 
} 

답변

0

은 이런 식으로 Index 컨트롤러를 변경합니다 : 이것은 내 컨트롤러 코드가

@model IEnumerable<SQL_Server_Inventory_UI.ServerList> 

@{ 
    ViewBag.Title = "Index"; 
} 


<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<table> 
    <tr> 
     <th> 
      ServerName 
     </th> 
     <th> 
      InstanceName 
     </th> 
     <th> 
      PortNumber 
     </th> 
     <th> 
      IsMonitored 
     </th> 
     <th> 
      Environment 
     </th> 
     <th> 
      SQLVersion 
     </th> 
     <th> 
      SQLServicePack 
     </th> 
     <th> 
      SQLProductVersion 
     </th> 
     <th> 
      RetireDate 
     </th> 
     <th> 
      IPAddress 
     </th> 
     <th> 
      IsVMW 
     </th> 
     <th> 
      Platform 
     </th> 
     <th> 
      IsLiteSpeedUsed 
     </th> 
     <th> 
      Domain 
     </th> 

     <th> 
      CreateDate 
     </th> 
     <th> 
      LastUpdateDate 
     </th> 
     <th> 
      CName 
     </th> 
     <th> 
      IsStandby 
     </th> 
     <th> 
      Server_Group 
     </th> 
     <th> 
      TeamMember 
     </th> 
     <th> 
      IsMissionCritical 
     </th> 
     <th> 
      IsCluster 
     </th> 
     <th> 
      DBANotes 
     </th> 
     <th></th> 
    </tr> 

@foreach (var item in Model) { 
    <tr> 

     <td> 
      @Html.DisplayFor(modelItem => item.ServerName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.InstanceName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.PortNumber) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.IsMonitored) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Environment) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.SQLVersion) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.SQLServicePack) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.SQLProductVersion) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.RetireDate) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.IPAddress) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.IsVMW) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Platform) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.IsLiteSpeedUsed) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Domain) 
     </td> 

     <td> 
      @Html.DisplayFor(modelItem => item.CreateDate) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.LastUpdateDate) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.CName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.IsStandby) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Server_Group.GroupName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.TeamMember.Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.IsMissionCritical) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.IsCluster) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.DBANotes) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id=item.ServerId }) | 
      @Html.ActionLink("Details", "Details", new { id=item.ServerId }) | 
      @Html.ActionLink("Delete", "Delete", new { id=item.ServerId }) 
     </td> 

    </tr> 
} 

</table> 

입니다 :

이 내 인덱스 뷰 코드

public ViewResult Index(string filter) 
{ 
    var serverlists = db.ServerLists.Include("Server_Group").Include("TeamMember"); 

    if (!string.IsNullorEmpty(filter)) 
     serverlists = serverlists.Where(sl => sl.Name.StartsWith(filter); 

    return View(serverlists.ToList()); 
} 

을 다음 변경하려면 목록 filtere가 필요할 때 {url}?filter=stringtosearchfor 필터를 사용하여 다시 게시 할보기 디. 이렇게하면 AJAX 스타일의 필터링은되지 않지만 의도 한 응답을 얻을 수 있습니다.

+0

코드를 잘못된 위치에 넣은 것처럼 보입니다 ... 도움을 주셔서 감사합니다! – user1551606

관련 문제