2014-12-12 2 views
0

학생 데이터를 표시하는 Jqgrid이므로 편집 또는 삭제를 위해 Jgrid 툴바 버튼을 사용하고 싶지 않습니다.Jqgrid의 모든 행에 Html.ActionLink 추가

public class StudentsGridModel 
{ 
    public StudentsGridModel() 
    { 
     StudentsGrid = new JQGrid 
     { 
      Columns = new List<JQGridColumn>() 
      { 
           new JQGridColumn { DataField = "StudentID", 
                PrimaryKey = true, 
                Editable = false, 
                HeaderText = "ID", 
                TextAlign = Jq.Grid.TextAlign.Center, 
                Width = 50}, 
            new JQGridColumn { DataField = "FullName", 
                Editable = true, 
                HeaderText = "Full Name", 
                Width = 175 
                }, 
           new JQGridColumn { DataField = "BirthDate", 
                Editable = true, 
                HeaderText = "Birth Date", 
                Width = 125 }, 
           new JQGridColumn { DataField = "Photo", 
                Editable = true, 
                HeaderText = "Photo", 
                Width = 175 
                }, 
           new JQGridColumn { DataField = "Gender", 
                Editable = true, 
                HeaderText = "Gender", 
                Width = 100 
                }, 
            new JQGridColumn { DataField = "Country", 
                Editable = true, 
                HeaderText = "Country", 
                Width = 100 
                }, 
            new JQGridColumn { DataField = "MobileNumber", 
                Editable = true, 
                HeaderText = "Mobile Number", 
                Width = 100 
                }, 
            new JQGridColumn { DataField = "Email", 
                Editable = true, 
                HeaderText = "Email", 
                Width = 100 
                } 
      }, 
      Height = Unit.Percentage(100), 
      Width = Unit.Percentage(100) 
     }; 
     StudentsGrid.ToolBarSettings.ShowRefreshButton = true; 
    } 
    public JQGrid StudentsGrid { get; set; } 
} 

교사 컨트롤러 : 당신은 컨트롤러에서 문자열을 형성 할 수

// GET: Teacher 
    public ActionResult Index() 
    { 
     var gridModel = new StudentsGridModel(); 
     var grid = gridModel.StudentsGrid; 
     SetUpGrid(grid); 

     return View(gridModel); 
    } 
    private void SetUpGrid(JQGrid grid) 
    { 
     grid.ID = "StudentsGrid"; 
     grid.DataUrl = Url.Action("DataRequested"); 
     grid.SortSettings.AutoSortByPrimaryKey = false; 
     grid.SortSettings.InitialSortColumn = "FullName"; 
     grid.SortSettings.InitialSortDirection = SortDirection.Asc; 

     grid.ToolBarSettings.ShowEditButton = false; 
     grid.ToolBarSettings.ShowAddButton = false; 
     grid.ToolBarSettings.ShowDeleteButton = true; 

     SetUpVirtualScrollingGrid(grid); 
    } 
    private void SetUpVirtualScrollingGrid(JQGrid grid) 
    { 
     grid.PagerSettings.ScrollBarPaging = true; 
     grid.PagerSettings.PageSize = 20; 
     grid.Height = System.Web.UI.WebControls.Unit.Pixel(400); 
    } 
    public JsonResult DataRequested() 
    { 
     StudentsGridModel gridModel = new StudentsGridModel(); 
     var data = from s in db.Students 
        select new 
        { 
         s.StudentID, 
         s.FullName, 
         s.BirthDate, 
         s.Photo, 
         s.Gender, 
         s.Country, 
         s.MobileNumber, 
         s.Email 
        }; 
     return gridModel.StudentsGrid.DataBind(data); 
    } 
+0

한 가지 방법은 href를 모델의 문자열로 구성하는 것입니다. –

+0

글쎄, 그냥 개체의 인스턴스로 설정되지 않은 개체 참조를 반환하므로 datafield로 저장할 수 없습니다. – user1493376

+0

무엇을 의미합니까? 지금 그것은 보통 null 참조 예외 인 것 같습니다. –

답변

0

그래서 난 여기

@Html.ActionLink("Edit", "Edit", new { id=item.StudentID }) | 
    @Html.ActionLink("Details", "Details", new { id=item.StudentID }) | 
    @Html.ActionLink("Delete", "Delete", new { id=item.StudentID }) 

같은 뭔가를 추가로 열을 원하는 것은 내 StudentGridModel입니다 . answer에서 컨트롤러 내부에서 HtmlHelper를 사용하려면 여기를 클릭하십시오.

하지만 href 직접 문자열을 형성하는 것이 좋습니다.

양식 열 : 그것에

new JQGridColumn 
{ 
    DataField = "Edit", 
    Editable = false, 
    HeaderText = "Edit", 
    Width = 100 
} 

추가 문자열 데이터 :

StudentsGridModel gridModel = new StudentsGridModel(); 
     var data = from s in db.Students 
        select new 
        { 
         s.StudentID, 
         s.FullName, 
         s.BirthDate, 
         s.Photo, 
         s.Gender, 
         s.Country, 
         s.MobileNumber, 
         s.Email, 
         Edit = String.Format(@"<a href='/Student/Edit/{0})'>Edit</a>", s.StudentID) 
        }; 

그러나 당신은 당신이 방법 당신이보기 돌아 Edit와 컨트롤러 Student이 있어야 이해해야합니다.

+0

그것은 나를 준다. 잘못된 익명 형식 멤버 선언자. 익명 형식 멤버는 멤버 할당, 단순한 이름 또는 멤버 액세스로 선언해야합니다. htmlhelper를 컨트롤러 내에서 사용해보고 무슨 일이 일어나는 지 알게 될 것입니다. – user1493376

+0

다른 종류의 문제는 다음과 같이 변경하십시오. 'Edit = String.Format (@ "Edit", s.StudentID)'. HTML 도우미 접근 방식은 결국 똑같은 일을 할 것입니다. –

+0

고마워요.하지만 처음에는 LINQ가 String.Format을 인식하지 못해서이 줄을'@ "로 변경했습니다. Edit"' – user1493376