Отображение данных в Dojogrid с использованием метода dojo.xhrget () - PullRequest
1 голос
/ 19 марта 2012

Я хочу отобразить набор данных, которые я получаю асинхронным вызовом на сервер с помощью метода dojo.xhrget (). Я извлекаю данные через URL и хочу, чтобы каждый раз, когда пользователь нажимал на панели содержимого, новый набор значений отображался в сетке без обновления всей страницы. Проблема в том, что данные не отображаются в сетке. Я получаю сообщение об ошибке методом xhrget ().

Код для моего скрипта ::

<script>
function populateGrid(){
    dojo.xhrGet({
        url: "http://localhost:8080/2_8_2012/jsp/GetJson.jsp",
        load: fillGrid,
        error:handleError,
        preventCache:true
        });
}

function fillGrid(data, ioArgs)
{
    alert(data);
        var newData = {
            identifier: "ID",
            items: data
    };

    var dataStore = new dojo.data.ItemFileReadStore({data: newData, id:"dataStoreId"});
    var gridStructure =[[

                          { field: "ID",
                                name: "ID_Emp",
                                width: "20%",
                                classes:"firstName"
                          },
                          {
                              field: "Names",
                              name: "Name",
                              width: "20%",
                              classes: "firstName"
                          },
                          { field: "Email",
                                name: "Mail",
                                width: "20%",
                                classes:"firstName"
                          }

                    ]
              ];

    var grid = dijit.byId("grid.DataGrid");     
    grid.setStore(dataStore);
    grid.startup();
}

function handleError() {
    alert("An error occurred while invoking the service.");
}
</script>

Теперь, здесь вывод предупреждений (данных) и http://localhost:8080/2_8_2012/jsp/GetJson.jsp одинаков, т.е. ::

[{"ID":1,"Names":"Shantanu","Email":"shantanu.tomar@gmail.com"},{"ID":2,"Names":"Mayur","Email":"mayur.sharma@gmail.com"},{"ID":26,"Names":"Rohit"}]

Моя функция xhr.get работает нормально с точки зрения извлечения данных. т.е. когда я обновляю значения в базе данных. Я получаю вывод оповещения (данных) с этим обновленным значением без повторного обновления всей страницы. Но данные не отображаются в сетке данных.

Я получаю предупреждение

An error occurred while invoking the service.

Код для http://localhost:8080/2_8_2012/jsp/GetJson.jsp: ::

<%@ page language="java" contentType="application/json; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ page import="MyPackage.PopulateTextbox" %>
<%
String temp1;
PopulateTextbox obj = new PopulateTextbox();
temp1 = obj.method();
%>
<%=temp1 %>

Код разметки:

<div id="grid.DataGrid" data-dojo-type="dojox.grid.DataGrid"  title="Simple Grid" data-dojo-props= "autoWidth:true, structure: gridStructure" style="width:900px; height:200px;"></div>

<div id="contentpaneid" dojoType="dijit.layout.ContentPane" title="Pending Activities" style="background-image: url('http://localhost:8080/2_8_2012/images/17.png');" onclick="populateGrid">

Я не понимаю, в чем проблема. Можете ли вы помочь мне узнать, почему я получаю предупреждение об ошибке. Благодарю.

1 Ответ

2 голосов
/ 19 марта 2012

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

Итак, ваша декларация:

<div id="grid.DataGrid" data-dojo-type="dojox.grid.DataGrid" 

необходимо изменить на:

<div id="mygrid" ></div>

и затем измените строку:

var grid = dijit.byId("grid.DataGrid");

до:

var grid = new dojox.grid.DataGrid({
                id: "grid",
                jsid: "grid",
                store: dataStore,
                structure: gridStructure,
                style: 'width:900px;height:300px;'
            }, dojo.byId("mygrid"));
grid.startup();

Также обратите внимание, что всякий раз, когда вы хотите обновить данные в сетке, вам не нужно заново заполнять сетку, вы можете просто обновить хранилище данных новыми значениями, и сетка данных автоматически обновится новыми данными :-) Dojo позаботится этой части.

Чтобы очистить существующие данные в хранилище данных и заполнить их новыми данными, установите свойство clearOnClose в своем МСФО. См .: Обновление Dojo Dijit Filtering. Выберите хранилище с асинхронными данными , чтобы узнать о clearOnClose

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...