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:
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
June 19,