Сетка mvccontrib - Как добавить <tr>id - PullRequest
2 голосов
/ 24 февраля 2012

Я хочу добавить идентификатор к элементам "tr" сетки mvccontrib, которую я строю:

<tr id="0"/>
<tr id="1"/>

, поэтому, если таблица содержит 10 строк, идентификаторы от 0 до 9.

Один из способов - добавить в мою сущность дополнительный элемент для сохранения этого значения, а затем создать его в виде скрытого столбца с идентификатором в качестве значения этого элемента - не очень элегантно.

Есть ли ещеэлегантный способ сделать это?Спасибо

Я дошел до этого, но теперь он жалуется на линию RenderUsing, есть идеи?

@model  IEnumerable<Tens.Models.UserPreviousNamesView>

<div class="demo_jui">
@{   
var userId = 0;

foreach (var item in Model)
{
    userId = item.Id;
    break;
}


@(Html.Grid(Model.Select((item,index) => new { Item = item, Index = index}))
.Columns(col =>
{   
    col.For(p => p.Item.Title);
    col.For(p => p.Item.Name);        
    col.Custom(@<text>
                    @Ajax.ActionLink("Delete", "DeleteUserPreviousName", "Summary", null, null, new { id = item.Item.Id, @class = "deleteUserPreviousName" })                                                   
                </text>).Encode(false);
})
.RowAttributes(p => new Hash(Id => "id"+p.Item.Index.ToString()))
.Attributes(Id => "userPreviousNamesTable")
.Empty("You currently have no Previous Names.")
.RenderUsing(new Tens.GridRenderers.UserPreviousNamesGridRenderer<Tens.Models.UserPreviousNamesView>()));

}

Ответы [ 2 ]

5 голосов
/ 24 февраля 2012

Вы можете преобразовать модель, добавив в нее индекс строки, а затем использовать метод RowAttributes:

@model IEnumerable<MyViewModel>
@(Html
    .Grid(Model.Select((item, index) => new { Item = item, Index = index }))
    .Columns(column =>
    {
        column.For(x => x.Item.Foo);
        column.For(x => x.Item.Bar);
    })
    .RowAttributes(x => new Hash(id => string.Format("id{0}", x.Item.Index)))
)

Также я предварительно добавил идентификатор с ключевым словом id, так как идентификаторы в HTML не могут вычисляться с числом, как показано в вашем примере.

Пример вывода:

<table class="grid">
    <thead>
        <tr>
            <th>Foo</th>
            <th>Bar</th>
        </tr>
    </thead>
    <tbody>
        <tr id="id0" class="gridrow">
            <td>foo 1</td>
            <td>bar 1</td>
        </tr>
        <tr id="id1" class="gridrow_alternate">
            <td>foo 2</td>
            <td>bar 2</td>
        </tr>
        <tr id="id2" class="gridrow">
            <td>foo 3</td>
            <td>bar 3</td>
        </tr>
    </tbody>
</table>
0 голосов
/ 22 августа 2014

Вы всегда можете отобразить скрытые столбцы без добавления идентификатора в конкретную строку или столбцы, как показано ниже

$(".mvcGridDollarHeader th:nth-child(16)").hide();
$(".mvcGrid td:nth-child(16)").hide();

Где mvcGrid - это tableStyle, а mvcGridDollarHeader - это стиль заголовка.

@grid1.GetHtml(
    tableStyle: "mvcGrid",
    displayHeader: true,
    emptyRowCellValue: "",
    headerStyle: "mvcGridDollarHeader",
...