Кендо Heirarchical Проблема Выравнивания Сетки


Я реализовал две сеткиKendo , Первая из которых является родительской сеткой, а вторая-дочерней. Когда я открываю дочернюю сетку, чтобы просмотреть значения для каждого родительского элемента в родительской сетке, выравнивание столбцов обеих сеток не совпадает.

Есть какая-нибудь помощь, как это решить ?

Вот общий код : -

/ / это родительская сетка

@(Html.Kendo().Grid<XYZ.Models.ViewModels.ABCMODEL>()
   .Name("ParentGrid")
    .Columns(columns =>
    {
        columns.Bound(e => e.A).Title("ABC").Width(30);
        columns.Bound(e => e.B).Title("EFG").Width(30).HeaderHtmlAttributes(new { style = "background-color:#996666;" });
        columns.Bound(e => e.C).Title("IJK").Width(30).HeaderHtmlAttributes(new { style = "background-color:#996666;" });
        columns.Bound(e => e.D).Title("MNO").Width(30).HeaderHtmlAttributes(new { style = "background-color:#996666;" });
        columns.Bound(e => e.E).Title("XYZ.").Width(30).HeaderHtmlAttributes(new { style = "background-color:#996666;" });

    })
    //.Scrollable()
    .DetailTemplateId("template")
        .HtmlAttributes(new { style = "height:100%;  background-color: #fcfedf;" })
        .HtmlAttributes(new { @class = "tableMain" })
    .DataSource(dataSource => dataSource
        .Ajax()
        // .PageSize(6)
            .Read(read => read.Action("HierarchyBinding_ABC", "Profit"))
    )
    .Events(events => events.DataBound("dataBound"))
    //.ColumnMenu()
    // .Scrollable()
    //.Sortable()
    //.Pageable()
)

/ / это дочерняя сетка

<script id="template" type="text/kendo-tmpl">
@(Html.Kendo().Grid<ABC.Models.ViewModels.ABCMODEL>()
        .Name("grid_#=CId#")
        .Columns(columns =>
        {
            columns.Bound(e => e.a).Title("123").Width(30);
            columns.Bound(e => e.b).Title("456").Format("{0:N3}").Width(30);
            columns.Bound(e => e.c).Title("789").Format("{0:N3}").Width(30);
            columns.Bound(e => e.d).Title("101").Format("{0:N3}").Width(30);
            columns.Bound(e => e.e).Title("112").Format("{0:N3}").Width(30);
        })
        .DataSource(dataSource => dataSource
            .Ajax()
            // .PageSize(5)
            .Read(read => read.Action("HierarchyBinding_XYZ", "Profit", new { CId =      "#=CId#" }))
        )
        .ToTemplate()
)



</script>


<script>

    function dataBound() {
        var grid = this;


        $(".k-hierarchy-cell").css({ width: 8 });     
       $(".k-hierarchy-col").css({ width: 8 });
    }
</script>


    <style>

.k-grid tbody .k-grid .k-grid-header
{
    display: none;
}    

#ParentGrid .k-grid-header .k-header
{
       background-color: #d42e12;       
       color:White;
       font-size:small; 
       font-style:normal; 
       border:1px; border-color:Black; border-style:solid; text-align:center;
       white-space:nowrap;
}

.k-grid tbody
{
    background-color: #fcfedf; 
    height:100%; 
    font-size:x-small;
    border:none;
    border-color: #fcfedf; 
    white-space:nowrap;
}

#ParentGrid .k-grid td
{
  border:none   
  padding-right: 0em !important;

}

</style>
Надеюсь, теперь вопрос станет более ясным. Жду с нетерпением к полезному ответу.
3 2

3 ответа:

Пришлось немного пофантазировать с некоторыми css, но вот пример того, где я должен был это сделать.

Http://jsbin.com/uritAno/2/edit

Я думаю, что главное было переопределить правильное заполнение и границу на сетке td, и установить каждому столбцу фиксированную ширину, за исключением одного.

.k-grid td
{
  border: none;
  padding-right: 0em !important;
}

Большое Спасибо за ваши ответы и комментарии. Они очень помогли мне найти ответ на мой вопрос.

Итак, вот окончательное решение :

/ / это родительская сетка (нет необходимости делать какие-либо изменения в родительской сетке, она остается такой, как есть с атрибутом width в каждом столбце)

/ / это дочерняя сетка (все изменения должны быть сделаны в "дочерней сетке")

<script id="template" type="text/kendo-tmpl">
@(Html.Kendo().Grid<ABC.Models.ViewModels.ABCMODEL>()
        .Name("grid_#=CId#")
        .Columns(columns =>
        {
            columns.Bound(e => e.a).Title("123");
            columns.Bound(e => e.b).Title("456").Format("{0:N3}").Width(149);
            columns.Bound(e => e.c).Title("789").Format("{0:N3}").Width(150);
            columns.Bound(e => e.d).Title("101").Format("{0:N3}").Width(137);
            columns.Bound(e => e.e).Title("112").Format("{0:N3}").Width(127);
        })
        .DataSource(dataSource => dataSource
            .Ajax()
            // .PageSize(5)
            .Read(read => read.Action("HierarchyBinding_XYZ", "Profit", new { CId =      "#=CId#" }))
        )
        .ToTemplate()
)

Вы должны удалить ширину из "первого столбца в дочерней сетке, т. е. столбца" a "" и начать настройку ширина от последней колонки.

Дайте ширину последнему столбцу дочерней сетки так, чтобы он выровнялся с последним столбцом "родительской сетки", т. е. Выровняйте столбец "e дочерней сетки" с "E родительской сетки", задав "e" подходящее значение.

Как только" e "выровняется, он будет исправлен, теперь аналогичным образом выровняйте столбец "d,b, c", и вы найдете столбец "a", выровненный с "A в родительской сетке".

Таким образом обе сетки выравниваются.

Значения в атрибуте width они были специфичны для моего экрана, поэтому я их использовал.Это не стандартные значения.Попробуйте выровнять дочернюю сетку в соответствии с вашим экраном, значения могут отличаться.

Надеюсь, что это поможет, большое спасибо и иметь большой Новый год впереди.

У меня была та же проблема с Kendo UI Javascript Grid и вдохновленный ответом Робина Гилтнера, я решил:

1) используя ту же ширину на парных столбцах, которые должны быть выровнены справа. (Начиная справа)

2) оставляя свободную ширину на динамических столбцах ширины. (Начиная слева)

3) переопределение класса .k-detail-cell следующим образом:

    .k-detail-cell
    {
        padding-right: 0em !important;
    }

Применяя padding-right: 0em !important; к .k-detail-cell, мы выравниваем только сетку деталей вправо; при применении padding-right: 0em !important; к Мы выравниваем вправо все столбцы обеих сеток и их содержимое.

(Не очень приятно, потому что даже верхний и Нижний колонтитулы выровнены справа)

Примечание: Kendo UI версии 2014.2.716