2014-12-12 3 views
0

Я Jqgrid, который отображает данные студентов, я не хочу использовать кнопки панели инструментов Jgrid для редактирования или удаления.Добавить Html.ActionLink в каждой строке в Jqgrid

поэтому я хочу дополнительный столбец, что есть что-то вроде этого

@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:

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

Ну, я не могу просто сохранить его как поле данных, потому что он возвращает ссылку на объект, не установленную на экземпляр объекта. – user1493376

+0

Что это значит? Похоже, теперь это обычное исключение для базовой ссылки. –

ответ

0

Вы можете сформировать вашу строку в контроллер , Если вы действительно хотите использовать HtmlHelper внутри контроллера здесь в answer, как это сделать.

Но лучше просто сформировать строку с помощью 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) 
        }; 

Но вы должны понимать, что вы должны иметь контроллер Student с помощью метода Edit, которые возвращают вас вид.

+0

Это дает мне Invalid анонимный тип объявления участника. Члены анонимного типа должны быть объявлены с назначением членов, простым именем или доступом к члену. Я собираюсь дать Htmlhelper внутри контроллера попробовать и посмотреть, что произойдет. – user1493376

+0

это другой вид проблемы попробуйте изменить следующим образом: 'Edit = String.Format (@" Edit ", s.StudentID)'. Подход Html Helper сделает то же самое в конце. –

+0

Спасибо, что это сработало, но сначала это дало мне ошибку, что LINQ не распознает String.Format, поэтому я изменил строку на это '@" Edit " – user1493376

Смежные вопросы