Кендо 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 ответа:
Пришлось немного пофантазировать с некоторыми 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