:: Forum >> Version 1 >>

XML - Paging - Set Row Count

The problem I'm having is trying to figure out where I should set the row count for the grid using synchronous xml data retrieval and then draw the grid.

When it first displays no data is shown and the row #'s are negative. If I page the grid will be refreshed and shown correctly. I tried to have the document write out the grid within the response function and the grid wasn't writter correctly either.

Any help would be appreciated.

Here's the code I have so far -

<html>
<
head>
    <
title>ActiveWidgets Grid</title>

    <!-- 
ActiveWidgets stylesheet and scripts -->
    <
link href="grid/grid.css" rel="stylesheet" type="text/css" ></link>
    <
script src="grid/grid.js"></script>
    <
script src="grid/browserSniffer.js" type="text/javascript"></script>


    <!-- Include 
patches here -->
    <
script src="grid/paging1.js"></script>


    <!-- 
grid format -->
    <
style>
        .
active-controls-grid {height400pxfontmenu;}

        .
active-grid-column {border-right1px solid threedshadow;}
        .
active-grid-row {border-bottom1px solid threedlightshadow;}
    </
style>
</
head>
<
body>
    <
form name="tableForm">

        <
script>


        </
script>
        <
script>
        
//    create ActiveWidgets data model - XML-based table
        
var table = new Active.XML.Table;

        var 
grid = new Active.Controls.Grid;

        
//    provide data URL
        
table.setURL("grid/company.xml?" + new Date().getTime());

        
//    replace the built-in row model with the new one (defined in the patch)
        
grid.setModel("row", new Active.Rows.Page);

        
// Set Paging Properties

         
var defaultResponse table.response;
        
table.response = function(XML) {
             
defaultResponse.call(tableXML);

            var 
rowCount table.getCount();
            
alert("Row Count " rowCount);
            
grid.setProperty("row/count"rowCount);
        }

        
//start data retrieval
        
table.request();

        
grid.setProperty("column/count"5);

        
//    set page size
        
grid.setProperty("row/pageSize"25);

        
// Set Columns
        
var columns = new Array();
        
columns[0]='<input type=\"checkbox\" name=\"selAll\" onclick=\"selectColumn();\">';
        
columns[1]='Ticker';
        
columns[2]='Company Name';
        
columns[3]='Market Cap.';
        
columns[4]='$ Sales';
        
columns[5]='Employees';

        
//    provide column labels
        
grid.setColumnProperty("texts"columns);

        
//    provide external model as a grid data source
        
grid.setDataModel(table);

        
//    write grid html to the page
        
document.write(grid);

        var 
holdSelAll false;

        function 
selectColumn() {
            var 
form document.forms['tableForm'];
            var 
selAll form.elements['selAll'];
            var 
rowSel form.elements['rowSel'];

            for (
0rowSel.lengthi++) {
                
rowSel[i].checked selAll.checked;
            }

            
holdSelAll selAll.checked;
        }

        function 
resetColumns() {
            var 
form document.forms['tableForm'];
            var 
selAll form.elements['selAll'];
            
selAll.checked holdSelAll;
            
selectColumn();
        }

        function 
storeValue(checkbox) {
            
alert(checkBox.checked);
        }

    </
script>


    </
form>
    <
table>
    <
tr>
    <
td align="middle">

        <!-- 
bottom page control buttons -->
        <
div>
            <
button onclick='goToPage(-Infinity)'>&lt;&lt;</button>
            <
button onclick='goToPage(-1)'>&lt;</button>
            <
span id='pageLabel'></span>
            <
button onclick='goToPage(1)'>&gt;</button>
            <
button  onclick='goToPage(Infinity)'>&gt;&gt;</button>
        </
div>
        <
script>
            function 
goToPage(delta) {
                var 
count grid.getProperty("row/pageCount");
                var 
number grid.getProperty("row/pageNumber");
                
number += delta;
                if (
number 0) {number 0}
                if (
number count-1) {number count-1}
                
document.getElementById('pageLabel').innerHTML "Page " + (number 1) + " of " count " ";
                
grid.setProperty("row/pageNumber"number);
                
grid.refresh();
                
resetColumns();
            }

            
goToPage(0);
        </
script>
    </
td>
    </
tr>
    </
table>


</
body>
</
html>
 
shaun thompson
Monday, June 13, 2005



This topic is archived.

Back to support forum

Forum search