Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   ExtJS4 Grid в IE 6,7 и 8 (https://javascript.ru/forum/extjs/25562-extjs4-grid-v-ie-6-7-i-8-a.html)

Alexsey42 09.02.2012 05:13

ExtJS4 Grid в IE 6,7 и 8
 
Добрый день
изучаю extjs 4. Вылезла такая проблема не показывается грид в IE 6 7 и 8.

Код:

Сведения об ошибке на веб-странице
Сообщение: 'locked' -  есть null или не является объектом
Строка: 14426
Символ: 13
Код: 0
URI-код: http://localhost/ext/ext-all-debug.js

В девятке хроме и лисе без проблем и ошибок в консоли.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <link rel="stylesheet" type="text/css" href="../ext/resources/css/ext-all.css"/>
		
		<link rel="stylesheet" type="text/css" href="../css/extjsreplace.css"/>
        <script type="text/javascript" src="../ext/ext-all-debug.js"></script>
        <script type="text/javascript" src="../ext/locale/ext-lang-ru.js"></script>
        <script type="text/javascript">


Ext.onReady(function() {
  

    Ext.define('teploData',{
        extend: 'Ext.data.Model',
        fields: ['Object', 'Ppr_vz', 'Pob_vz', 'Ppr_nz', 'Pob_nz', 'Ppr','Pob', 'Gpr', 'Gob', 'Tpr', 'Tob']
    });

var store = Ext.create('Ext.data.Store', {
        model: 'teploData',
        proxy: {
            type: 'ajax',
            url: 'data.xml',
            reader: {
                type: 'xml',
                record: 'table',
             }
        }
    });

	store.load();

	
	var grid = Ext.create('Ext.grid.Panel', {
	    
        store: store,
		columnLines: true,
         columns: [
		 {header: "Обьект", width:160, align: "left",  dataIndex: 'Object' }
		 ,{
		  text: 'верх.зона',
		 columns:[
		 {header: "Рпр", width:60, align: "center",  dataIndex: 'Ppr_vz'},
		 {header: "Робр", width:60, align: "center",  dataIndex: 'Pob_vz'} ]
		 },
		 {
		  text: 'нижн.зона',
		 columns:[
		 {header: "Рпр", width:85, align: "center",  dataIndex: 'Ppr_nz'},
		 {header: "Робр", width:85, align: "center",  dataIndex: 'Pob_nz'} ]
		 },
		 {header: "Рпр", width:85, align: "center",  dataIndex: 'Ppr' },
		 {header: "Робр", width:85, align: "center",  dataIndex: 'Pob' },
		 {header: "Gпр", width:85, align: "center",  dataIndex: 'Gpr' },
		 {header: "Gобр", width:85, align: "center",  dataIndex: 'Gob' },
		 {header: "Тпр", width:85, align: "center",  dataIndex: 'Tpr' },
		 {header: "Тобр", width:85, align: "center",  dataIndex: 'Tob' },
         ],
        width:980,
        height:810,
		title: 'теплосеть',
        renderTo: 'grid',
		viewConfig: {
            stripeRows: true
        }
    });    

});

    </script>
    </head>
    <body>
	<div id ="grid"></div>
    </body>
</html>

Alexsey42 09.02.2012 05:40

Разобрался
проблема была в лишних запятых
помогла статья
http://goloburdin.blogspot.com/2011/...-explorer.html

nekto_O 09.02.2012 07:45

Цитата:

Сообщение от Alexsey42
...
28 record: 'table',
...
59 {header: "Тобр", width:85, align: "center", dataIndex: 'Tob' },

да, ослы не прощают запятых после последнего свойства/метода объекта или элемента массива.

Alexsey42 09.02.2012 09:31

Cпрошу еще
как сделать refresh данных через определенный промежуток времени
пробовал так
setTimeout (function (){store.load();},100);

nekto_O 09.02.2012 09:57

Цитата:

Сообщение от Alexsey42
пробовал так
setTimeout (function (){store.load();},100);

ну вообще-то должно работать если store определено и доступно в этом контексте.
Можно в более краткой форме:
setTimeout(store.load, 100);

Alexsey42 13.02.2012 05:52

При обновлении данных хотелось бы выводить дату из таблицы в Grid Title
Cделал так
function dataSyncJson(){
    
 var dataSync = new Object();
 var xmlhttp = getXmlHttp()
 
xmlhttp.open('GET', 'json.php', true);
xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
       dataSync = JSON.parse(xmlhttp.responseText);
      var dates = dataSync.date;
       return dates;
         }
  }
};
xmlhttp.send(null);
}


var task = 
{
   run : function() 
   {
    grid.setTitle(dataSyncJson());
      store.load();
      
   },
  interval: 60000
}

Ext.TaskManager.start(task);


Заголовок вообще не показывается, в консоли ошибок нет.

nekto_O 13.02.2012 07:49

Цитата:

Сообщение от Alexsey42
Заголовок вообще не показывается, в консоли ошибок нет.

дело в том что сама функция dataSyncJson отрабатывает раньше чем приходит ответ с сервера, поэтому заголовок и не должен проставляться.
Если вы используете ExtJS, то вот это var xmlhttp = getXmlHttp() лишнее.
К примеру можно так:
Ext.Ajax.request({
    url: 'json.php',
    success: function(response){
        var dataSync = Ext.decode(response.responseText);
        ...
        grid.setTitle(dataSync.date);
        store.load();
    }
});


Часовой пояс GMT +3, время: 05:58.