2012-03-19 2 views
1

dojo.xhrget() 메소드를 사용하여 서버에 대한 비동기 호출로 검색하는 데이터 세트를 표시하려고합니다. URL을 통해 데이터를 검색하고 사용자가 콘텐츠 창을 클릭 할 때마다 새로운 값 집합이 전체 페이지를 새로 고치지 않고 표에 표시되도록하려는 경우 문제는 데이터가 Grid에 표시되지 않는다는 것입니다. xhrget() 오류 메서드로 오류가 발생했습니다.dojo.xhrget() 메소드를 사용하여 Dojogrid에 데이터 표시

내 스크립트 코드는 여기 지금 :: 경고 (데이터) 및 http://localhost:8080/2_8_2012/jsp/GetJson.jsp의 출력

<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> 

입니다 같은 예 :

내 xhr.get 기능이 작동
[{"ID":1,"Names":"Shantanu","Email":"[email protected]"},{"ID":2,"Names":"Mayur","Email":"[email protected]"},{"ID":26,"Names":"Rohit"}] 

데이터 검색 측면에서는 문제가 없습니다. 즉 데이터베이스의 값을 업데이트 할 때 전체 페이지를 다시 새로 고치지 않고 해당 업데이트 된 값으로 경고 (데이터) 출력을 얻습니다. 그러나 데이터는 데이터 격자에 표시되지 않습니다.

나는 경고를 수신하고

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"> 

나는 문제가 무엇을 얻고 있지 않다 . 오류 경보가 발생하는 이유에 대해 제발 도와주세요. 감사.

+0

나는 whats the error .. 및 i gt this :: 404 Grid가 표시되지 않았습니다. –

+2

나는이 질문을 당신의 최근 질문에서 찾았다. 귀하의 질문을 읽은 후, 나는 그것이 실제로 검색되기 전에 귀하의 데이터 그리드에 귀하의 데이터를 바인딩하려고하는 것 같아요. 따라서 모르는 사이에 null/undefined 객체에 그리드를 바인딩하고있는 것입니다.이 객체는 아마도 여러분이 보는 오류를 생성 할 것입니다. 확실하지 않지만이 경우 한 번만 확인하십시오. – MrClan

+0

감사합니다 Pratik .. :) –

답변

2

Pratik Chandra가 문제를 올바르게 암시했습니다. 설정하지 않은 상점이 없으면 DataGrid가 채워집니다.

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

neeeds로 변경 될 :

<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 그 부분을 처리합니다.

데이터 저장소의 기존 데이터를 지우고 새 데이터로 채우려면 IFRS에 clearOnClose 속성을 설정하십시오. 참조 : clearOnClose에 대해 알아 보려면 Updating Dojo Dijit FilteringSelect's store with asynchonous data

+0

감사 코드에 비제이.나는 그것을 시도하고 그리드에서 데이터를 받고있다. 그러나 두 번째 시간을 클릭하면 데이터가 눈금에서 업데이트되지 않습니다. 알림 (데이터)이 잘 업데이트됩니다. 그러나 그리드의 데이터가 업데이트되지 않습니다. fetch() 관련 명령문을 사용해야합니까? 그렇다면 정확한 위치를 어디에서 가져올 지 알려주시기 바랍니다. ? 덕분에 –

+0

여기 내 Itemfilereadstore 문이 있습니다. 코드에 대한 다른 변경 사항은 내가 말한 것과 똑같습니다. var dataStore = new dojo.data.ItemFileReadStore ({data : newData, id : "dataStoreId", clearOnClose : true}); –

+0

그래서 당신의 온 클릭 기능은 다음과 비슷한 모습이 될 것 기능 onCpaneClick() { VAR 연기 = dojo.xhrGet ( { URL : "" handleAs : "json으로", 하중 : 기능 (데이터) = { dataStore.data newData에, dataStore.close(); grid.refresh(); } 오류 : 함수 (에러) {// 핸들 에러 }); –