:: Forum >>

Why does Firefox refresh page when using paging patch with XML data table?

Works fine in IE, but FF reloads the entire page on both Windows and Mac. Every time i try to go to another page (doesn't matter if its next, previous, first, or last) it displays the correct data for a split second, and then reloads the entire web page (resetting the xml data to the 'first' page).

i can't post an example yet because it's behind a corporate firewall - i will work up a public example if the solution is not already obvious to someone out there ...

the relevant JS is included below:

<script>
    
    
    // create ActiveWidgets data model - XML-based table
    var table = new Active.XML.Table;
    
    // create ActiveWidgets Grid javascript object
    var oGrid = new Active.Controls.Grid;
    
    
    table.setText = function(value, i, j){
        var node = this.getNode(i, j);
        node.text = value;
    }

    
    
    
    
    
    
    // url returning xml
    table.setURL("xml_users.php?mode=<? printvar($mode) ?>&searchfield=<? printvar($searchfield) ?>&searchterm=<? printvar($searchterm) ?>&securityid=<? echo $securityid ?>");
    
    
    
    // start asyncronous data retrieval
    table.request();

    
    // define column labels
    var columns = ["ID", "Email", "First Name", "Last Name", "Inactive", "Created", "Last Modified"];
    
    var defaultResponse = table.response;



    
    table.response = function(table){
        defaultResponse.call(this, table);

        // replace the built-in row model with the new one (defined in the patch)
        oGrid.setModel("row", new Active.Rows.Page);
        oGrid.setProperty("row/count", this.getCount());
        oGrid.setProperty("column/count", 7);
        oGrid.setProperty("column/texts", columns);
    
        
        
        // set page size
        oGrid.setProperty("row/pageSize", 17);
        goToPage(0);
    }
    
    
    
    function goToPage(delta){
        var rowCount = oGrid.getProperty("row/count");
        var count = oGrid.getProperty("row/pageCount");
        var number = oGrid.getProperty("row/pageNumber");
        number += delta;
        if (number < 0) {number = 0}
        if (number > count-1) {number = count-1}
        document.getElementById("pagelabel").innerHTML = "Page <b>" + (number + 1) + "</b> of <b>" + count + "</b>"
        document.getElementById("rowlabel").innerHTML = "Total Rows <b>"+ rowCount +"</b>";
        oGrid.setProperty("row/pageNumber", number);
        oGrid.refresh();
    }
    

    
    // provide external model as a grid data source
    oGrid.setDataModel(table);
    
    
    // create formats
    var fstring = new Active.Formats.String;
    var fnumber = new Active.Formats.Number;
    var fdate = new Active.Formats.Date;
    fdate.setTextFormat("mm/dd/yyyy hh:mm");
    fdate.setDataFormat("RFC822");
    //fdate.setDataFormat("ISO8061");
    fnumber.setTextFormat("");


    // set column formatting
    table.setFormats([fnumber, fstring, fstring, fstring, fstring, fdate, fdate]);
    
    

    // handle row actions
    oGrid.Handler_Edit = function(rowindex) {
        //alert(this.getDataProperty("value",rowindex,0));
        var uid = (this.getDataProperty("value",rowindex,0));
        if (uid > 0) {
            document.location = "user.php?securityid=<?=$securityid?>&mode=edit&id=" + uid;
        } else {
            alert("Please select a user.");
        }
    }
    
    
    oGrid.Handler_History = function(rowindex) {
        var uid = (this.getDataProperty("value",rowindex,0));
        if (uid > 0) {
            document.location = "userhistory.php?id=" + uid;
        } else {
            alert("Please select a user.");
        }
    }
    
    

    oGrid.RowColor_Inactive = function() {
        return (oGrid.getProperty("data/text", this.getRowProperty("index"), 4) == "inactive") ? "#EAEAEA" : "#FFFFFF";
    }
    
    oGrid.getTemplate("row").setStyle('background', oGrid.RowColor_Inactive);
    
    
    // set double-click action handler
    oGrid.DoubleClickAction = function(src) {
        var row = src.getRowProperty("index");
        oGrid.Handler_Edit(row);
    }
    oGrid.getTemplate("row").setEvent("ondblclick", function(){this.action("DoubleClickAction")});
    oGrid.setAction("DoubleClickAction", oGrid.DoubleClickAction);
    
    
    
    

    // initially set selected row
    <? if (isset($theindex)) { ?>
        oGrid.setProperty("selection/index", <?=$theindex?>);
    <? } ?>
    
    
    
    // write grid html to the page
    document.write(oGrid);
    
</script>
dave v
Sunday, June 19, 2005
it does the same thing using the php-javascript model - Firefox forces a webpage refresh when trying to change grid 'pages'. ???
dave v
Sunday, June 19, 2005
solved the problem - if the grid resides inside <form> tags, in Firefox it exhibits the weird page refresh behavior above. if the <form> tags are removed, everything is fine ...
dave v
Sunday, June 19, 2005
OK, I understand - it is due to the button click triggering form submit, right?
Alex (ActiveWidgets)
Monday, June 20, 2005
That's right, Alex.
The html button tag has an attribute called type thas has 3 possible values: button, submit and reset.
According to the w3c recomendation, if you don't specify this attribute, the default is submit.
This is exactly what Firefox do, but Internet Explorer does not.
Rafael Vieira
Thursday, July 28, 2005

This topic is archived.


Back to support forum

Forum search