MaximGB
9 Aug 2007, 2:04 PM
Hi.
I've tried to find the solution but failed, now reporting it here:
- Inline editor in an EditorGrid is always at the first row in Opera.
1. Ext version 1.1
2. Adapter ext-base.js (and others tested too)
3. windows(xp sp2)
4. browser - Opera 9.1. then 9.22
5. code snippet:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<title>Storage test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="resources/css/ext-all.css" />
<script type="text/javascript" src="adapter/ext/ext-base.js"> </script>
<script type="text/javascript" src="ext-all-debug.js"> </script>
</head>
<body>
<script type="text/javascript">//<![CDATA[
Ext.onReady(function() {
var toolbar_el = Ext.DomHelper.append(document.body, {tag: 'div', id: 'toolbar'});
var toolbar = new Ext.Toolbar(toolbar_el, [
{
text: 'Add',
handler: onAddButtonClick
},
{
text: 'Edit',
handler: onEditButtonClick
},
{
text: 'Delete',
handler: onDeleteButtonClick
},
{
text: 'Filter',
handler: onFilterButtonClick
},
{
text: 'Reset filter',
handler: onResetFilterButtonClick
},
'-',
{
text: 'Commit',
handler: onCommitButtonClick
},
{
text: 'Reject',
handler: onRejectButtonClick
}
]);
var data = [];
for (var i = 0; i < 10; i++) {
data.push({title: 'line-'+i});
}
var grid_el = Ext.DomHelper.append(document.body, {tag: 'div', id: 'grid', style: 'border: 1px solid #D0DEF0;'});
var grid = new Ext.grid.EditorGrid(grid_el, {
ds: new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.JsonReader({}, [
{name: 'title'}
]),
sortInfo: {field: 'title', dir: 'DESC'}
}),
cm: new Ext.grid.ColumnModel([
{
header: 'Title',
dataIndex: 'title',
sortable: true,
editor: new Ext.grid.GridEditor(
new Ext.form.TextField({
}),
{
}
)
}
]),
autoSizeColumns: true
});
grid.getDataSource().load();
grid.render();
var filter = '';
function onAddButtonClick()
{
Ext.Msg.prompt('Add', 'Input value', function(btn, text) {
if (btn == 'ok') {
var ds = grid.getDataSource();
var rt = ds.recordType;
ds.clearFilter(true);
ds.add(new rt({title: text}));
ds.applySort();
ds.filter('title', filter);
}
});
}
function onEditButtonClick()
{
var rc = grid.getSelectionModel().getSelected();
if (rc) {
Ext.Msg.prompt('Edit ' + rc.get('title'), 'Input value', function(btn, text) {
if (btn == 'ok') {
rc.set('title', text);
}
});
}
}
function onDeleteButtonClick()
{
var rc = grid.getSelectionModel().getSelected();
if (rc) {
var ds = grid.getDataSource();
ds.clearFilter(true)
ds.remove(rc);
ds.filter('title', filter);
}
}
function onFilterButtonClick()
{
Ext.Msg.prompt('Filter', 'Input value', function(btn, text) {
if (btn == 'ok') {
filter = text;
grid.getDataSource().filter('title', text);
}
});
}
function onResetFilterButtonClick()
{
filter = '';
grid.getDataSource().clearFilter();
}
function onCommitButtonClick()
{
grid.getDataSource().commitChanges();
}
function onRejectButtonClick()
{
grid.getDataSource().rejectChanges();
}
});
//]]></script>
</body>
</html>
6. FireBug stacktrace - no bugs thrown
7. screenshot - see below
I've tried to find the solution but failed, now reporting it here:
- Inline editor in an EditorGrid is always at the first row in Opera.
1. Ext version 1.1
2. Adapter ext-base.js (and others tested too)
3. windows(xp sp2)
4. browser - Opera 9.1. then 9.22
5. code snippet:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<title>Storage test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="resources/css/ext-all.css" />
<script type="text/javascript" src="adapter/ext/ext-base.js"> </script>
<script type="text/javascript" src="ext-all-debug.js"> </script>
</head>
<body>
<script type="text/javascript">//<![CDATA[
Ext.onReady(function() {
var toolbar_el = Ext.DomHelper.append(document.body, {tag: 'div', id: 'toolbar'});
var toolbar = new Ext.Toolbar(toolbar_el, [
{
text: 'Add',
handler: onAddButtonClick
},
{
text: 'Edit',
handler: onEditButtonClick
},
{
text: 'Delete',
handler: onDeleteButtonClick
},
{
text: 'Filter',
handler: onFilterButtonClick
},
{
text: 'Reset filter',
handler: onResetFilterButtonClick
},
'-',
{
text: 'Commit',
handler: onCommitButtonClick
},
{
text: 'Reject',
handler: onRejectButtonClick
}
]);
var data = [];
for (var i = 0; i < 10; i++) {
data.push({title: 'line-'+i});
}
var grid_el = Ext.DomHelper.append(document.body, {tag: 'div', id: 'grid', style: 'border: 1px solid #D0DEF0;'});
var grid = new Ext.grid.EditorGrid(grid_el, {
ds: new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.JsonReader({}, [
{name: 'title'}
]),
sortInfo: {field: 'title', dir: 'DESC'}
}),
cm: new Ext.grid.ColumnModel([
{
header: 'Title',
dataIndex: 'title',
sortable: true,
editor: new Ext.grid.GridEditor(
new Ext.form.TextField({
}),
{
}
)
}
]),
autoSizeColumns: true
});
grid.getDataSource().load();
grid.render();
var filter = '';
function onAddButtonClick()
{
Ext.Msg.prompt('Add', 'Input value', function(btn, text) {
if (btn == 'ok') {
var ds = grid.getDataSource();
var rt = ds.recordType;
ds.clearFilter(true);
ds.add(new rt({title: text}));
ds.applySort();
ds.filter('title', filter);
}
});
}
function onEditButtonClick()
{
var rc = grid.getSelectionModel().getSelected();
if (rc) {
Ext.Msg.prompt('Edit ' + rc.get('title'), 'Input value', function(btn, text) {
if (btn == 'ok') {
rc.set('title', text);
}
});
}
}
function onDeleteButtonClick()
{
var rc = grid.getSelectionModel().getSelected();
if (rc) {
var ds = grid.getDataSource();
ds.clearFilter(true)
ds.remove(rc);
ds.filter('title', filter);
}
}
function onFilterButtonClick()
{
Ext.Msg.prompt('Filter', 'Input value', function(btn, text) {
if (btn == 'ok') {
filter = text;
grid.getDataSource().filter('title', text);
}
});
}
function onResetFilterButtonClick()
{
filter = '';
grid.getDataSource().clearFilter();
}
function onCommitButtonClick()
{
grid.getDataSource().commitChanges();
}
function onRejectButtonClick()
{
grid.getDataSource().rejectChanges();
}
});
//]]></script>
</body>
</html>
6. FireBug stacktrace - no bugs thrown
7. screenshot - see below