Обновление данных сетки по событию клика - PullRequest
0 голосов
/ 15 марта 2012

У меня есть этот код.Здесь я извлекаю новый набор значений через URL через Jquery Ajax ($. Get ()) при вызове функции gotoa () для некоторого события click.Я получаю набор значений правильно, так как я получаю правильный результат при оповещении.Но сетка не обновляется в этот момент.Когда я обновляю всю страницу, сетка обновляется.Как обновить сетку при вызове самой gotoa ().?

Код ::

<script type="text/javascript">
function gotoa(){
    $.get("http://localhost:8080/2_8_2012/jsp/GetJson.jsp?random=" + new Date().getTime(), function(result){

            alert(result);
            var storedata={
                identifier:"ID",
                label:"name",
                items:result
        };


    var store = new dojo.data.ItemFileWriteStore({data: storedata});
    alert(store);
    //var gridh = dijit.byId("gridDiv");
    //gridh.setStore(store);


        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 grid1 = new dojox.grid.DataGrid({
                id: 'grid2',
                store: store,
                structure: gridStructure,
                rowSelector: '30px',
                selectionMode: "single",
                autoHeight:true,
                columnReordering:true},
              document.createElement('div'));

            /*append the new grid to the div*/
            dojo.byId("gridDiv").appendChild(grid1.domNode);

            /*Call startup() to render the grid*/
            grid1.startup();

         // assuming our grid is stored in a variable called "myGrid":
            dojo.connect(grid1, "onSelectionChanged", grid1, function(){
                var items = grid1.selection.getSelected();



            //  do something with the selected items
                dojo.forEach(items, function(item){
                    var v = grid1.store.getValue(item, "Names");

                    function showDialog() {
                        dojo.require('dijit.Tooltip');
                        dijit.byId("terms").show();
                    }
                    //if(name!="Mail")
                    showDialog();
                    }, grid1);

            });


            dojo.connect(grid1, "onCellClick", grid1, function sendmail(){
                var items = grid1.selection.getSelected();

                dojo.forEach(items, function(item){
                    var v1 = grid1.store.getValue(item, "Email");      
                    alert(v1);
                    request.setAttribute("variablemail", v1);
            });

        });


    },"text");

    }

</script>

Вывод оповещения (результата) в определенный момент времени выглядит так: *

[{"ID":1,"Names":"Shantanu","Email":"shantanu.tomar@gmail.com"},{"ID":2,"Names":"Mayur","Email":"mayur.sharma@gmail.com"},{"ID":3,"Names":"Rohit"},{"ID":4,"Names":"Jasdeep"},{"ID":5,"Names":"Rakesh","Email":"rakesh.shukla@gmail.com"},{"ID":6,"Names":"Divyanshu"},{"ID":8,"Names":"hello"},{"ID":9,"Names":"fine"},{"ID":10,"Names":"shivani"}]

И выводalert (store) имеет вид ::

[object Object]

И я вызываю gotoa () при щелчке мышью в любом месте панели содержимого (на данный момент позже будет помещена кнопка или что-то подобное), например:

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

Как обновить данные сетки?Благодарю.

1 Ответ

0 голосов
/ 15 марта 2012

Я новичок в додзё, думаю, этот код поможет вам ::

<script type="text/javascript">
function gotoa(isUpdate){
    $.get("http://localhost:8080/2_8_2012/jsp/GetJson.jsp?random=" + new Date().getTime(), function(result){

            alert(result);
            var storedata={
                identifier:"ID",
                label:"name",
                items:result
        };


    var store = new dojo.data.ItemFileWriteStore({data: storedata});
    alert(store);
    if (isUpdate) {
       var grid = dojo.byId('grid2');
       grid.setStore(store);
    } else {


        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 grid1 = new dojox.grid.DataGrid({
                id: 'grid2',
                store: store,
                structure: gridStructure,
                rowSelector: '30px',
                selectionMode: "single",
                autoHeight:true,
                columnReordering:true},
              document.createElement('div'));

            /*append the new grid to the div*/
            dojo.byId("gridDiv").appendChild(grid1.domNode);

            /*Call startup() to render the grid*/
            grid1.startup();

         // assuming our grid is stored in a variable called "myGrid":
            dojo.connect(grid1, "onSelectionChanged", grid1, function(){
                var items = grid1.selection.getSelected();



            //  do something with the selected items
                dojo.forEach(items, function(item){
                    var v = grid1.store.getValue(item, "Names");

                    function showDialog() {
                        dojo.require('dijit.Tooltip');
                        dijit.byId("terms").show();
                    }
                    //if(name!="Mail")
                    showDialog();
                    }, grid1);

            });


            dojo.connect(grid1, "onCellClick", grid1, function sendmail(){
                var items = grid1.selection.getSelected();

                dojo.forEach(items, function(item){
                    var v1 = grid1.store.getValue(item, "Email");      
                    alert(v1);
                    request.setAttribute("variablemail", v1);
            });

        });
        }

    });

    }

</script>

используйте gotoa() для начальной загрузки сетки и gotoa(true) для обновления сетки.

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