Сетка MVCContrib - выберите строку

У меня есть сетка MVCContrib, которая показывает выбранные свойства из объекта Account. Я хочу, чтобы пользователь выбрал строку и перешел на другую страницу, чтобы просмотреть полные свойства объекта, представленного строкой, по которой он щелкнул. Как добавить действие .Selected к строкам сетки?


person Brian    schedule 25.05.2010    source источник


Ответы (2)


Я столкнулся с похожей проблемой сегодня.

Вы можете использовать .RowAttributes вот так:

Html.Grid(Model).Columns(column => 
{
    column.For(e => e.Id); 
    column.For(e => e.Message); 
})
.RowAttributes(x => new Dictionary<string, object>
    {{"onClick", "window.location.href = 'google.com'"}})
.Render();

В результате, когда вы нажимаете на, он запускает javascript «onclick» и открывает Google. Вы можете изменить URL-адрес для передачи идентификатора, используя «x» в Lamda.

person Chi Chan    schedule 21.06.2010

Если вы используете сетку в контексте MVC3, вы также можете сделать это с помощью класса расширений на стороне сервера:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MvcContrib;
using MySolution.ViewModels;

namespace MySolution.Models.Extensions
{
public static class RowAttributeExtensions
{
    public static Hash GetRowAttributes(this MySolution.ViewModels.Model)
    {

        string onclickFunctionBody = "{window.location.href = '/MyController/MyAction?id=" + Model.Id + "'; return false;}";
        Hash hash = new Hash(onclick => onclickFunctionBody)
        return hash;
    }
}
}

а на стороне клиента это будет иметь форму:

@Html.Grid(Model).RowAttributes(row => row.Item.GetRowAttributes()).Columns(column =>
{
    column.For(c => c.Col1);
    column.For(c => c.Col2);
    ...
})
person GenericMVCProgrammer    schedule 12.12.2012