[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с grid
johniek_comp
Что-то не могу разобраться как принять данные, kohana мне отдает в джейсоне, а грид не воспринимает его...принимает только такую ерунду
var Data = [
[
'com1', 71.72, 0.02, 0.03, '123'],
[
'com2', 29.01, 0.42, 1.47, '123'],
[
'com3', 83.81, 0.28, 0.34, '123']
];



сам грид
var grid = Ext.create('Ext.grid.Panel', {
store: store,
stateful: true,
collapsible: true,
multiSelect: true,
stateId: 'stateGrid',

самый простой...кто-то уже делал подобное?
отдаю в json_encode() хочу преобразовать в грид...дайте хоть ссылку на ману, а то в доки ничего нет



Спустя 3 минуты, 41 секунда (23.06.2012 - 21:49) sharki написал(а):
У тебя какая ColumnModel?
К тому же, ты должен отдавать тот вид, который требует ExtJs.

Спустя 20 секунд (23.06.2012 - 21:50) vital написал(а):
Цитата
store: store,

Вот там в переменной store - объект, к-й передает\получает данные.
Там можно задать урл..
Цитата

а то в доки ничего нет

все там есть, не гнать.

Спустя 1 минута, 59 секунд (23.06.2012 - 21:52) sharki написал(а):

Спустя 3 минуты, 30 секунд (23.06.2012 - 21:55) johniek_comp написал(а):
vital
ага, натолкнул на мысль, пошел поправил и все заработало, спасибо!

Спустя 17 минут, 41 секунда (23.06.2012 - 22:13) johniek_comp написал(а):
еще вопрос:
грид должен принимать данные только со специального хранилища созданного для него?
вот
var store = Ext.create('Ext.data.Store', {
model: '',
proxy: {
type: 'ajax',
url: 'ajax.php',
reader: {
type: 'json'
}
}
}
);

или можно вручную запихнуть json? потому что не совсем понятно что возвращает Ext.create
вручную я имел в виду так
Ext.Ajax.request({
url: 'ajax.php',
method: 'post',
params: {
sid: 1,
},
success: function(response){
var text = response.responseText;
Ext.Msg.alert('message', text);
}
}
);

просто так я параметры могу передать, а то тупо ответ получить не подходит под наши задачи.

и что означает model в методе create?

Спустя 3 минуты, 24 секунды (23.06.2012 - 22:16) vital написал(а):
Цитата
не совсем понятно что возвращает Ext.create

объект тоготипа, к-й ее попросили.
Цитата

можно вручную запихнуть json?

можно, а зачем?
Цитата

только со специального хранилища созданного для него?

ничего не мешает использовать это же хранилище и в другом месте.

Спустя 14 минут, 59 секунд (23.06.2012 - 22:31) johniek_comp написал(а):
вот попробовал без хранилища
Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext', '/extjs');
Ext.require([
'Ext.grid.*',
'Ext.data.*',
'Ext.util.*',
'Ext.state.*',
'Ext.Ajax.*'

]);
var st = Ext.Ajax.request({
url: 'ajax.php',
method: 'post',
params: {
sid: 1,
},
success: function(response){
var text = response.responseText;
// Ext.Msg.alert('message', text);
}
}
);
// запрос происходит нормально, в text записал ответ сервера в json
var grid = Ext.create('Ext.grid.Panel', {
store: text, // то что пришло, типа отсюда брать
columns: [
{text: "первая", flex: 1, dataIndex: 'one', sortable: true},
{text: "вторая", width: 115, dataIndex: 'two', sortable: true}

],
height:210,
renderTo: 'grid'
});

консоль Uncaught ReferenceError: text is not defined (anonymous function)

Спустя 3 минуты, 56 секунд (23.06.2012 - 22:35) sharki написал(а):
johniek_comp
Суть в том, что Ajax то отправил запрос, а grid то не будет ждать, вот и не видит он переменную text. И еще, ты объявил переменную внутри анонимной функции, её извне не видно. Так же есть метод loadData().

Спустя 7 минут, 40 секунд (23.06.2012 - 22:43) johniek_comp написал(а):
sharki
задержал, но чую не туда копаю, не работает:
Свернутый текст
var st = Ext.Ajax.request({
url: 'ajax.php',
method: 'post',
params: {
sid: 1,
},
success: function(response){
var data = response.responseText;
setTimeout(testjs(data), 1000)

// Ext.Msg.alert('message', text);
}
}
);
function testjs(data) {
var grid = Ext.create('Ext.grid.Panel', {
store: data,
columns: [
{text: "первая", flex: 1, dataIndex: 'one', sortable: true},
{text: "вторая", width: 115, dataIndex: 'two', sortable: true}

],
height:210,
renderTo: 'grid-example'
});
}

Uncaught TypeError: Cannot read property 'buffered' of undefined

а про loadData() не понял, растолкуй...

Спустя 5 минут, 58 секунд (23.06.2012 - 22:49) sharki написал(а):
Не понимаю зачем ты придумываешь какие то изощерения, есть уже готовые классы для этого. Например.

Ext.define('Article', {
extend: 'Ext.data.Model',
fields: [
{name: 'one', type: 'int'},
{name: 'two', type: 'string'}
]
});

var store = Ext.create('Ext.data.Store', {
model: 'Article',
proxy: {
type: 'ajax',
url: "URL HERE",
extraParams : {
val1: "val1"
},
actionMethods: 'POST'
},
autoLoad: true
});

var grid = Ext.create('Ext.grid.Panel', {
store: store ,
columns: [
{text: "первая", flex: 1, dataIndex: 'one', sortable: true},
{text: "вторая", width: 115, dataIndex: 'two', sortable: true}

],
height:210,
renderTo: 'grid-example'
});



А с LoadData я переборщил,не для твоего случая он

Спустя 12 минут, 56 секунд (23.06.2012 - 23:02) johniek_comp написал(а):
sharki
Uncaught TypeError: Cannot read property 'dom' of null

Спустя 10 часов, 16 минут, 40 секунд (24.06.2012 - 09:19) johniek_comp написал(а):
подправьте кто-нибудь:
Свернутый текст
Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext', '/extjs');

Ext.require([
'Ext.*',

]);

Ext.define('Article', {
extend: 'Ext.data.Model',
fields: [
{name: 'one', type: 'string'},
{name: 'two', type: 'string'}
]
});

var store = Ext.create('Ext.data.Store', {
model: 'Article',
proxy: {
type: 'ajax',
url: "ajax.php",
extraParams : {
sid: 1,
johniek : true
},
actionMethods: 'POST'
},
autoLoad: true
});

var grid = Ext.create('Ext.grid.Panel', {
store: store ,
columns: [
{text: "первая", flex: 1, dataIndex: 'one', sortable: true},
{text: "вторая", width: 115, dataIndex: 'two', sortable: true}

],
height:210,
renderTo: 'grid'
});

ajax.php возвращает json
{"one":["0","1"],"two":["2","3"]}

консоль говорит Uncaught TypeError: Cannot read property 'dom' of null

Спустя 39 минут, 38 секунд (24.06.2012 - 09:58) sharki написал(а):
Аяксдолжен возвращать такой вид
 [ ['com1', 71.72, 0.02,  0.03,  '123'],
[
'com2', 29.01, 0.42, 1.47, '123'],
[
'com3', 83.81, 0.28, 0.34, '123']]

Спустя 22 минуты, 30 секунд (24.06.2012 - 10:21) sharki написал(а):
Смотри, ьы описываешь вид, который должен прийти в ответ на аякс.
fields: [
{name: 'one', type: 'int'},
{name: 'two', type: 'string'}
]

т.е должен прийти массив с 2мя элементами массива one и two

 [ [123,'com1'],
[
1234,'com2'],
[
1235,'com3']]


Если так, то вставится 3 строчки в таблице.
Если хочешь больше, то надо добавить нужное поле в fields
fields: [
{name: 'one', type: 'int'},
{name: 'two', type: 'string'},
{name: 'three', type: 'string'}
]


И на ответе ты должен указать значение 3его поля

 [ [123,'com1','adfom1'],
[
1234,'com2','adfom1'],
[
1235,'com3','adfom1']]

Спустя 1 час, 1 минута, 30 секунд (24.06.2012 - 11:22) johniek_comp написал(а):
sharki
Цитата
Аяксдолжен возвращать такой вид

вот с этого я и начинал тему, вообщем никак не поддается мне он!!!
вот ajax.php
<?php
if(isset($_POST['sid']))
{
$json = array("one" => array("0","1"), "two" => array("2","3"));
echo json_encode($json);
}
?>

получаю {"one":["0","1"],"two":["2","3"]} обычный json все как надо
может я не так понимаю?
вот закомментил посмотри :lol:
Свернутый текст

Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext', '/extjs'); // папка с extjs

Ext.require([
'Ext.*', // подключаем вообще все!!!

]);
Ext.define('Article', {
extend: 'Ext.data.Model', // хер знает что это
fields: [
{name: 'int', type: 'int'},
{name: 'one', type: 'string'}, // типы полей
{name: 'two', type: 'string'}
]
});

var store = Ext.create('Ext.data.Store', { // ajax-запрос
model: 'Article',
proxy: {
type: 'ajax',
url: "ajax.php",
extraParams : {
sid: 1,
johniek : true // параметры
},
actionMethods: 'POST' // метод
},
autoLoad: true // хер знает что это
});

var grid = Ext.create('Ext.grid.Panel', { // стоим грид
store: store , // это то что пришло от скрипта
columns: [
{text: "integer", flex: 1, dataIndex: '', sortable: true},
{text: "первая", flex: 1, dataIndex: 'one', sortable: true},
{text: "вторая", width: 115, dataIndex: 'two', sortable: true}
// название поля в гриде, индекс ас. массива, с сортировкой
],
height:210, // размер
renderTo: 'grid' // засунуть в div id="grid"
});

результат = 0;

Спустя 3 минуты, 58 секунд (24.06.2012 - 11:26) sharki написал(а):
if(isset($_POST['sid']))
{
$json = array(array("0","one","1"),array("2","two","3"));
echo json_encode($json);
}


Вот такой вид должен быть

Спустя 24 минуты, 56 секунд (24.06.2012 - 11:51) johniek_comp написал(а):
пи****, доков нет, есть одна книга и то для goldfusion...

а для мобильных интерфейсов extjs хорошо будет?

Спустя 23 минуты, 17 секунд (24.06.2012 - 12:14) sharki написал(а):
johniek_comp
все есть, просто ты не умеешь их курить

Спустя 35 минут, 16 секунд (24.06.2012 - 12:50) johniek_comp написал(а):
sharki
Цитата
просто ты не умеешь их курить

согласен smile.gif


_____________
user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.