Горизонтальные полосы прокрутки на программном dojox.grid.DataGrid
Как я могу предотвратить отображение горизонтальной полосы прокрутки?
Примером того, что я пытаюсь сделать, является http://jsfiddle.net/fdlane/gjkGF/3/
Ниже приведен пример страницы того, что я пытаюсь сделать. Поскольку ширина контейнера контейнера больше ширины сетки, я ожидал, что горизонтальные полосы прокрутки не будут отображаться.
Используя текущую высоту 200px и количество строк больше 6, отображается вертикаль (хорошо). Однако горизонталь также отображается (плохо).
Что мне не хватает?
Спасибо
FDL
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dijit/themes/tundra/tundra.css" />
<link rel="stylesheet" type="text/css" title="Style" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojox/grid/resources/Grid.css">
<link rel="stylesheet" type="text/css" title="Style" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojox/grid/resources/tundraGrid.css">
<title>Grid Scrolling</title>
</head>
<body class="tundra">
<div id="container" style="width: 350px; height: 200px">
<div id="myGrid">
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js"> </script>
<script>
dojo.require("dojo.store.Memory");
dojo.require("dojo.data.ObjectStore");
dojo.require("dojox.grid.DataGrid");
dojo.ready(function () {
var myStore = new dojo.store.Memory({
data: [{ id: "RecId1", values: "fooValue1" },
{ id: "RecId2", values: "fooValue2" },
{ id: "RecId3", values: "fooValue3" },
{ id: "RecId4", values: "fooValue4" },
{ id: "RecId5", values: "fooValue5" },
{ id: "RecId6", values: "fooValue6" },
{ id: "RecId7", values: "fooValue7" },
{ id: "RecId7", values: "fooValue7"}]
});
dataStore = new dojo.data.ObjectStore({
objectStore: myStore
});
var grid = new dojox.grid.DataGrid({
store: dataStore,
structure: [{
name: "ID",
field: "id",
width: "100px"
}, {
name: "Values",
field: "values",
width: "100px"
}]
}, "myGrid");
grid.startup();
});
</script>
</body>
</html>
1 ответ
Добавьте это переопределение стиля к элементу head:
<style>
.dojoxGridScrollbox { overflow-x: hidden; }
</style>
Причиной может быть то, что когда сетка переполняется по вертикали, появляется вертикальный (-y) скроллер, который потребляет 30 (или около того) пикселей ширины, в результате чего контейнер сетки также переполняется в горизонтальной ориентации.
Вы можете попытаться использовать функцию изменения размера сетки - если borderlayout.resize решает вашу проблему, причина в том, что он рекурсивно изменяет размеры своих дочерних элементов (при некотором вычисленном значении abs). С Grid вы увидите этот поток:
resize: function(changeSize, resultSize){
// summary:
// Update the grid's rendering dimensions and resize it
// Calling sizeChange calls update() which calls _resize...so let's
// save our input values, if any, and use them there when it gets
// called. This saves us an extra call to _resize(), which can
// get kind of heavy.
// fixes #11101, should ignore resize when in autoheight mode(IE) to avoid a deadlock
// e.g when an autoheight editable grid put in dijit.form.Form or other similar containers,
// grid switch to editing mode --> grid height change --> From height change
// ---> Form call grid.resize() ---> grid height change --> deaklock
if(dojo.isIE && !changeSize && !resultSize && this._autoHeight){
return;
}
this._pendingChangeSize = changeSize;
this._pendingResultSize = resultSize;
this.sizeChange();
},