Solved

XHTML 1.0 versus HTML 4.0

Posted on 2009-04-12
26
850 Views
Last Modified: 2013-11-19
Greetings all

I have been downloading and evaluating various grids. I finally settled on one that does it for me
(http://www.codeproject.com/KB/webforms/ScrollingGrid.aspx)

However, when I make use of it on my page, everything is condensed. After some scrutiny (and muttered words not found in any known dictionary!), I found the difference XHTML 1.0 vs HTML 4.0

My Page source is:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

The demo page is:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

Is ther any way around this?  The grid is exactly what I need and I'd hate to have to attempt something from scratch!

In advance, thanks!!

     allanmark


Err-Grid.jpg
Ok-Grid.jpg
0
Comment
Question by:allanmark
  • 10
  • 8
  • 6
  • +1
26 Comments
 
LVL 12

Expert Comment

by:Cyber-spy
ID: 24126475
Does the grid not allow you to set the font properties?

If you have already tried this, could you create a small grid (one column, one row) with nothing else on the page, then upload all the generated HTML to this question, so we can see what is happening?


0
 
LVL 3

Expert Comment

by:iserko
ID: 24126480
Allan,

just use CSS to modify the font-size. Try it by putting the content of the code snippet into the <head> of the document.


<style>

body { font-size: 8px; }

</style>

Open in new window

0
 
LVL 3

Expert Comment

by:iserko
ID: 24126495
Try raising the font-size if it is too small.
0
 

Author Comment

by:allanmark
ID: 24126538
Tried "body { font-size: 8px; ..."  -  same result.

Set font-size in grid ("Font-Size="Medium">") - made the grid font larger. I also set the font in the containing control. It appearred not to do anything, but when I hit F5 to refresh, you geta brief flah of the hedaders at the larger size. DOn't know what's happening there!!

Snippet contains Page Source And Code Behind for Grid with one column and only one record.
PAGE SOURCE:
 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
 

<%@ Register TagPrefix=avg Assembly=ScrollingGrid Namespace=AvgControls %>

<%@ Register TagPrefix=avg TagName=DemoControl Src="~/WebUserControl2.ascx" %>
 
 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

<html>

<head>

<title>ScrollingGrid Demo VII</title>

<style>

body { font-family:verdana; font-size: 8px; }

tr { font-size:0.7em; }

div.links { font-family:verdana; font-size:1.2em; color:white; }

a { color:white; }

</style>

<script>

	function sg1_updateHeight()

	{

		scaleHeightToBrowser('sg1', 175, 80);

	}
 

	if (window.attachEvent)

		window.attachEvent("onresize", sg1_updateHeight);

	else if (window.addEventListener)

		window.addEventListener("resize", sg1_updateHeight, false);

</script>

</head>

<body bgcolor=#888888>
 

<div class=links>

	Demo 1 &nbsp;&nbsp; </div>
 

<hr size=1 color=black>
 
 

<form id="Form1" runat="server">
 
 

	
 

		Variable width & height ScrollingGrid within a table. Control is set to update the last scroll position on postback.<br>

		<br>
 

		<avg:ScrollingGrid ID=sdd runat=server Width=100% Height=190 HeaderWidthReduction=17>
 

			<asp:DataGrid runat=server ID=Grid2

				AutoGenerateColumns=True AllowSorting=True AllowPaging=True PageSize=35

				OnPageIndexChanged=Grid2_PageIndexChanged OnSortCommand=Grid2_Sort>
 

				<HeaderStyle BackColor=red ForeColor=white Font-Bold=True />

				<ItemStyle BackColor=#fefefe />

				<AlternatingItemStyle BackColor=#eeeeee />

				<PagerStyle BackColor=silver ForeColor=White Mode=NumericPages />

			</asp:DataGrid>
 

		</avg:ScrollingGrid>
 
 

		<script language=javascript>

		<!--

		setTimeout("sg1_updateHeight()", 100)

		//--></script>
 

</form>
 
 

CODE BEHIND:
 

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Data.OleDb;

using System.Drawing;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Configuration;
 
 

public partial class Default2 : System.Web.UI.Page

{

    string sortCol = "OrderID";
 
 

    override protected void OnInit(EventArgs e)

    {

        this.Load += new System.EventHandler(this.Page_Load);

        base.OnInit(e);

    }
 
 

    protected void Page_Load(object sender, System.EventArgs e)

    {

        if (!IsPostBack)

        {

            PopulateData();

        }
 

        sdd.SetStartScrollPosFromPostack();

    }
 
 

    void PopulateData()

    {

        OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=" + Server.MapPath("data.mdb"));

        conn.Open();
 

        OleDbDataAdapter adap = new OleDbDataAdapter("SELECT CustomerId FROM Orders Where OrderId = 10248 ORDER BY " + this.sortCol, conn);

        DataTable tbl = new DataTable();

        adap.Fill(tbl);
 

        Grid2.DataSource = tbl;
 

        Grid2.DataBind();
 

        conn.Close();

    }
 
 

    protected void Grid2_PageIndexChanged(object sender, DataGridPageChangedEventArgs e)

    {

        Grid2.CurrentPageIndex = e.NewPageIndex;

        PopulateData();

    }
 
 

    protected void Grid2_Sort(object sender, DataGridSortCommandEventArgs e)

    {

        this.sortCol = e.SortExpression;

        PopulateData();

    }
 
 

}

Open in new window

0
 
LVL 12

Expert Comment

by:Cyber-spy
ID: 24126558
As I don't have the scrolling grid to test with, could you please upload the GENERATED Html (view source in your web browser).

Also, what browser are you using? IE, Firefox? Have you tested in different browsers?

0
 
LVL 3

Expert Comment

by:iserko
ID: 24126572
Try this

Replace
<avg:ScrollingGrid ID=sdd runat=server Width=100% Height=190 HeaderWidthReduction=17>
with
<avg:ScrollingGrid ID=sdd runat=server Width=100% Height=190 HeaderWidthReduction=17 CssClass=tableview>

Then add this to the <head> of the document:
<style>
.tableview { font-size: 14px; }
</style>
0
 
LVL 3

Expert Comment

by:iserko
ID: 24126579
Be sure to remove all font-size changes you made before
0
 
LVL 12

Expert Comment

by:Cyber-spy
ID: 24126590
iserko - if the ScrollingGrid is working correctly, surely you shouldn't have to fudge it like this?
0
 

Author Comment

by:allanmark
ID: 24126617
1. Removed previous font changes
2. Applied "tableview class".

Back to the first result -- everything condensed.


<head>

<title>ScrollingGrid Demo VX</title>

<style>

tableview { font-size: 14px; }

body { font-family:verdana; font-size: 8px; }

tr { font-size:0.7em; }

div.links { font-family:verdana; font-size:1.2em; color:white; }

a { color:white; }

</style>

...........
 

<avg:ScrollingGrid ID=sdd runat=server Width=100% Height=190 HeaderWidthReduction=17 CssClass="tableview">

...........

...............

Open in new window

0
 
LVL 3

Expert Comment

by:iserko
ID: 24126629
Remove the font-size setting in body

change
body { font-family:verdana; font-size: 8px; }
to
body { font-family:verdana; }

0
 
LVL 3

Assisted Solution

by:iserko
iserko earned 150 total points
ID: 24126631
Heh and ...

remove
tr { font-size:0.7em; }
0
 

Author Comment

by:allanmark
ID: 24126656
Did so. Slightly larger. See attached jpg.

I got to wondering if this coudln't be one of those Firefox (which, BTW,  I'm using) / IExplorer issues. So, I ran it in IE, but got an error on this line "document.getElementById(sgID + "$divContent").style.height = newHeight;", in the JScript file (ScrollingGrid.js -  see snippet).
/*

 * Copyright © 2005, Ashley van Gerven (ashley.v__g__@g__mail.com - remove '_')

 * All rights reserved.

 *

 * Use of this script, with or without modification, is permitted

 * provided that the above copyright notice and disclaimer below is not removed.

 *

 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND

 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED

 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.

 * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,

 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT

 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,

 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,

 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY

 * OF SUCH DAMAGE.

 */
 
 

var updateSGDivWidthsExplorerTimer = null
 
 

function initScrollingGrid(scrollingGridID, gridID, lastRowIsPager, startScrollLeft, startScrollTop)

{

	if (navigator.userAgent.toLowerCase().indexOf("opera") != -1) // opera not supported

		return;
 

	if (!document.getElementById) // old browsers not supported

		return;
 

	var tblHdr = document.getElementById(scrollingGridID + "$tblHdr");

	var tblDataGrid = document.getElementById(gridID);

	var tblPager = document.getElementById(scrollingGridID + "$tblPager");
 

	// get header table's first row

	var tbodyEl = tblHdr.childNodes[firstChildElIndex(tblHdr, "TBODY")];

	var trEl = tbodyEl.childNodes[firstChildElIndex(tbodyEl, "TR")];
 

	// get datagrid table's first row

	var tbodyEl2 = tblDataGrid.childNodes[firstChildElIndex(tblDataGrid, "TBODY")];

	var trEl2 = tbodyEl2.childNodes[firstChildElIndex(tbodyEl2, "TR")];
 

	// delete empty TR on placeholder table

	tbodyEl.removeChild(trEl);
 

	// move the header row from datagrid table to our placeholder table

	tbodyEl.appendChild(trEl2);
 

	if (lastRowIsPager)  // if grid pager is last row then move it below the scrolling DIV (i.e. freeze it)

	{

		// get pager table's first row

		var tbodyEl3 = tblPager.childNodes[firstChildElIndex(tblPager, "TBODY")];

		var trEl3 = tbodyEl3.childNodes[firstChildElIndex(tbodyEl3, "TR")];
 

		// get datagrid table's last row

		var trEl4 = tbodyEl2.childNodes[lastChildElIndex(tbodyEl2, "TR")];
 

		// delete empty TR on placeholder table

		tbodyEl3.removeChild(trEl3);
 

		// move the footer from datagrid table to our seperate table

		tbodyEl3.appendChild(trEl4);
 

		// set table width to match content DIV

		tblPager.width = document.getElementById(scrollingGridID + "$divContent").offsetWidth;

	}
 
 

	setColumnWidths(scrollingGridID, gridID);
 
 

	if (window.attachEvent)  // IE only - resize DIVs now + on resize

	{

		updateSGDivWidthsExplorer();

		window.attachEvent("onresize", scheduleUpdateSGDivWidthsExplorer);

	}

}
 
 

// match up column widths

function setColumnWidths(scrollingGridID, gridID)

{

	// reset scroll positions since FF remembers them on page-refresh

	document.getElementById(scrollingGridID + "$divHdr").scrollLeft = 0;

	document.getElementById(scrollingGridID + "$divContent").scrollLeft = 0;

	document.getElementById(scrollingGridID + "$divContent").scrollTop = 0;
 

	// for FF: ensure enough space to expand columns

	document.getElementById(scrollingGridID + "$headerCntr").style.width = 10000;

	document.getElementById(scrollingGridID + "$contentCntr").style.width = 10000;
 

	var widths = new Array();

	var totalWidth = 0;
 

	var tblHdr = document.getElementById(scrollingGridID + "$tblHdr");

	var tblGrid = document.getElementById(gridID);
 

	// get header row

	var tbodyEl = tblHdr.childNodes[firstChildElIndex(tblHdr, "TBODY")];

	var trEl = tbodyEl.childNodes[firstChildElIndex(tbodyEl, "TR")];
 

	// get first content row

	var tbodyEl2 = tblGrid.childNodes[firstChildElIndex(tblGrid, "TBODY")];

	var trIndex = firstChildElIndex(tbodyEl2, "TR");

	if (trIndex == -1) // i.e. no content rows

	{

		document.getElementById(scrollingGridID + "$contentCntr").style.width = 1;

		return;

	}

	var trEl2 = tbodyEl2.childNodes[trIndex];
 
 

	for (var i=0; i<trEl.childNodes.length; i++)

	{

		if (trEl.childNodes[i].nodeName != "TD") // skip #text nodes

			continue;
 

		// TD element for the header row

		var tdHdr = trEl.childNodes[i];
 

		// TD element for the content row

		var tdContent = trEl2.childNodes[i];
 

		// get width of of the header or content cell (depends which is widest)

		if (tdHdr.offsetWidth > tdContent.offsetWidth)

			widths[i] = tdHdr.offsetWidth;

		else

			widths[i] = tdContent.offsetWidth;
 

		totalWidth += widths[i];

	}
 
 

	if (document.all) // IE: set table-layout style

	{

		tblGrid.style.tableLayout = "fixed";

		tblHdr.style.tableLayout = "fixed";

	}
 
 

	for (var i=0; i<widths.length; i++)

	{

		if (widths[i]+"" == "undefined")

			continue;
 

		// TD element for the header row

		var tdHdr = trEl.childNodes[i];
 

		// TD element for the content row

		var tdContent = trEl2.childNodes[i];
 

		var widthAdjustment = 0;

		if (!document.all)

		{

			widthAdjustment = -2 * parseInt(tblGrid.getAttribute("cellpadding")); // FF: subtract cellpadding

		}
 

		// Update either the header cell or content cell (not both, otherwise FF stuffs up)

		if (tdHdr.offsetWidth != widths[i])

			tdHdr.style.width = widths[i] + widthAdjustment; // update header column width

		if (tdContent.offsetWidth != widths[i])

			tdContent.style.width = widths[i] + widthAdjustment; // update content column width

	}
 

	// update the content container table width from 10000 to correct width

	document.getElementById(scrollingGridID + "$contentCntr").style.width = tblGrid.offsetWidth;

}
 
 

// IE resize event handler

function scheduleUpdateSGDivWidthsExplorer()

{

	clearTimeout(updateSGDivWidthsExplorerTimer);

	updateSGDivWidthsExplorerTimer = setTimeout("updateSGDivWidthsExplorer()", 20);

}
 
 

// IE only - update widths for all ScrollingGrids according to their container table (since content of table is clipped)

function updateSGDivWidthsExplorer()

{

	var arr = document.getElementsByTagName("TABLE");

	for (i=0; i<arr.length; i++)

	{

		if (arr[i].getAttribute("NAME") == "ScrollingGrid")

		{

			var scrollingGridID = arr[i].id;
 

			var headerReduction = 0;

			if (document.getElementById(scrollingGridID + "$divHdr").style.marginRight != "")

				headerReduction = parseInt(document.getElementById(scrollingGridID + "$divHdr").style.marginRight);
 

			var footerReduction = 0;

			if (document.getElementById(scrollingGridID + "$tblPager") != null && document.getElementById(scrollingGridID + "$tblPager").style.marginRight != "")

				footerReduction = parseInt(document.getElementById(scrollingGridID + "$tblPager").style.marginRight);
 

			try

			{

				document.getElementById(scrollingGridID + "$divHdr").style.width = document.getElementById(scrollingGridID).clientWidth - headerReduction;

				document.getElementById(scrollingGridID + "$divContent").style.width = document.getElementById(scrollingGridID).clientWidth;

				document.getElementById(scrollingGridID + "$tblPager").style.width = document.getElementById(scrollingGridID).clientWidth - footerReduction;

			}

			catch (err)

			{}
 

			updateScroll(document.getElementById(scrollingGridID + "$divContent"), scrollingGridID);

		}

	}

}
 
 

// find the index of first child element (e.g. TBODY) - handy for FF which creates #text nodes from whitespace

function firstChildElIndex(el, searchFor)

{

	for (var i=0; i<el.childNodes.length; i++)

	{

		if (el.childNodes[i].nodeName == searchFor)

			return i;

	}

	return -1;

}
 
 

// find the index of last child element

function lastChildElIndex(el, searchFor)

{

	for (var i=el.childNodes.length-1; i>=0; i--)

	{

		if (el.childNodes[i].nodeName == searchFor)

			return i;

	}

	return -1;

}
 
 

// content scroll event handler (matches the header row with the horizontal scroll position of content)

function updateScroll(divObj, scrollingGridID)

{

	if (document.getElementById(scrollingGridID + "$divHdr") != null)

		document.getElementById(scrollingGridID + "$divHdr").scrollLeft = divObj.scrollLeft;
 

	// save scroll position to hidden input

	document.getElementById(scrollingGridID + "$hdnScrollPos").value = divObj.scrollLeft + "-" + divObj.scrollTop;

}
 
 

function setContentScrollPos(sgID, left, top)

{

	var divContent = document.getElementById(sgID + "$divContent");

	divContent.scrollLeft = left;

	divContent.scrollTop = top;

}
 
 
 
 

// ************************************

// *        Utility functions         *

// ************************************
 

// scale the content DIV height with the browser window height minus specified height [reduceBy]

function scaleHeightToBrowser(sgID, reduceBy, minHeight)

{

	var newHeight = document.body.clientHeight - reduceBy;

	if (newHeight < minHeight)

		newHeight = minHeight;
 

	document.getElementById(sgID + "$divContent").style.height = newHeight;

}
 
 

// scroll the content by cellspacing height to get rid of double border

function adjustScrollTop(scrollingGridID, gridID)

{

	document.getElementById(scrollingGridID + "$divContent").scrollTop = parseInt(document.getElementById(gridID).getAttribute("cellspacing"));

}
 
 

// reduce the height of the header div by cellspacing height to get rid of double border (alternate method to adjustScrollTop)

function cropHeader(scrollingGridID, gridID)

{

	document.getElementById(scrollingGridID + "$divHdr").style.height = document.getElementById(scrollingGridID + "$divHdr").offsetHeight - parseInt(document.getElementById(gridID).getAttribute("cellspacing"));

}

Open in new window

Latest-Grid.jpg
0
 

Author Comment

by:allanmark
ID: 24126667
Ooops ... the error message for that JScript = "Microsoft JScript runtime error: Object required"
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 3

Expert Comment

by:iserko
ID: 24126701
@Cyber-Spy ... I didn't suggest fudging the script ... I suggested used the proper procedure (stated on the programmer's page) to apply a certain CSS style for the table

@Allan ... the javascript should be working. Its working on the programmer's demo page in IE7 as well as Firefox.
Oh and btw ... you missed something in the <style> element ... there should be a <dot> in front of tableview (see code snippet)
<head>

<title>ScrollingGrid Demo VX</title>

<style>

.tableview { font-size: 14px; }

body { font-family:verdana; font-size: 8px; }

tr { font-size:0.7em; }

div.links { font-family:verdana; font-size:1.2em; color:white; }

a { color:white; }

</style>

...........

 

<avg:ScrollingGrid ID=sdd runat=server Width=100% Height=190 HeaderWidthReduction=17 CssClass="tableview">

...........

...............

Open in new window

0
 

Author Comment

by:allanmark
ID: 24126731
Ooops! Ok, corrected the .tableview. Sizng is now improved (see atatched, laest02.jpg). If you look at this, you ill see that while the sizing is larger, the column spacing varies.

Back to the DOC header ... the demo header contained ...HTML 4.0 ... and was created with VS2003. I'm using VS2005 whichc creates the DOC header with XHTML 1.0.  Any chance taht this is a compatability issue?

0
 
LVL 3

Assisted Solution

by:iserko
iserko earned 150 total points
ID: 24126807
Well considering that the ScrollingGrid add-in creates XHTML non-compliant HTML code (no double-quotes) I would say maybe.
0
 
LVL 42

Assisted Solution

by:David S.
David S. earned 150 total points
ID: 24127190
For the record, this is not an HTML vs. XHTML issue -- it's a "standards mode" vs. "quirks mode" issue. If you used the HTML 4.01 Transitional doctype that includes the URL to the DTD, you would have the same problems.

More information:
http://www.dynamicsitesolutions.com/html/document-types/
http://dev.opera.com/articles/view/14-choosing-the-right-doctype-for-your/
0
 
LVL 12

Expert Comment

by:Cyber-spy
ID: 24127211
@Iserko,

Although creating a CSS class is indeed the correct way of applying a style to a table, if this ScrollingGrid has been well designed and implemented, all the styles applicable to it should be available as properties of the object, and there should be no need to resort to creating your own classes, which the control may override (a style attribute in the table tag would take precedence over the page level class)

@allanmark
From what I've read above, it would seem there is something wrong with the HTML output by the control (i.e. not to XHTML standards). If you could just do a view source in the web browser, and post the rendered HTML here, I can play with it a browser and see what can be changed to fix the output.
0
 

Author Comment

by:allanmark
ID: 24128152
Many thanks for all your efforts.

Please see attached source.



 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

<html>

<head>

<title>ScrollingGrid Demo Original</title>

<style>

body { font-family:verdana; font-size:0.7em; }

tr { font-size:0.7em; }

div.links { font-family:verdana; font-size:1.2em; color:white; }

a { color:white; }

</style>

<script>

	function sg1_updateHeight()

	{

		scaleHeightToBrowser('sg1', 175, 80);

	}
 

	if (window.attachEvent)

		window.attachEvent("onresize", sg1_updateHeight);

	else if (window.addEventListener)

		window.addEventListener("resize", sg1_updateHeight, false);

</script>

</head>

<body bgcolor=#888888>
 

<div class=links>
 

	Demo 1 &nbsp;&nbsp; </div>
 

<hr size=1 color=black>
 
 

<form name="Form1" method="post" action="Default2.aspx" id="Form1">

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />

<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNjAzMTU4NTE3D2QWAgIBD2QWBAIBD2QWAgICDxQrAAsPFggeCERhdGFLZXlzFgAeC18hSXRlbUNvdW50AiMeCVBhZ2VDb3VudAIYHhVfIURhdGFTb3VyY2VJdGVtQ291bnQCvgZkZGRkZGRkZGQWCB4JR3JpZExpbmVzCyojU3lzdGVtLldlYi5VSS5XZWJDb250cm9scy5HcmlkTGluZXMAHgtCb3JkZXJXaWR0aBsAAAAAAAAAAAEAAAAeC0NlbGxQYWRkaW5nAgIeBF8hU0ICoIAoFCsADjwrAAQBABYIHgpIZWFkZXJUZXh0BQdPcmRlcklEHglEYXRhRmllbGQFB09yZGVySUQeDlNvcnRFeHByZXNzaW9uBQdPcmRlcklEHghSZWFkT25seWg8KwAEAQAWCB8IBQpDdXN0b21lcklEHwkFCkN1c3RvbWVySUQfCgUKQ3VzdG9tZXJJRB8LaDwrAAQBABYIHwgFCkVtcGxveWVlSUQfCQUKRW1wbG95ZWVJRB8KBQpFbXBsb3llZUlEHwtoPCsABAEAFggfCAUJT3JkZXJEYXRlHwkFCU9yZGVyRGF0ZR8KBQlPcmRlckRhdGUfC2g8KwAEAQAWCB8IBQxSZXF1aXJlZERhdGUfCQUMUmVxdWlyZWREYXRlHwoFDFJlcXVpcmVkRGF0ZR8LaDwrAAQBABYIHwgFC1NoaXBwZWREYXRlHwkFC1NoaXBwZWREYXRlHwoFC1NoaXBwZWREYXRlHwtoPCsABAEAFggfCAUHU2hpcFZpYR8JBQdTaGlwVmlhHwoFB1NoaXBWaWEfC2g8KwAEAQAWCB8IBQdGcmVpZ2h0HwkFB0ZyZWlnaHQfCgUHRnJlaWdodB8LaDwrAAQBABYIHwgFCFNoaXBOYW1lHwkFCFNoaXBOYW1lHwoFCFNoaXBOYW1lHwtoPCsABAEAFggfCAULU2hpcEFkZHJlc3MfCQULU2hpcEFkZHJlc3MfCgULU2hpcEFkZHJlc3MfC2g8KwAEAQAWCB8IBQhTaGlwQ2l0eR8JBQhTaGlwQ2l0eR8KBQhTaGlwQ2l0eR8LaDwrAAQBABYIHwgFClNoaXBSZWdpb24fCQUKU2hpcFJlZ2lvbh8KBQpTaGlwUmVnaW9uHwtoPCsABAEAFggfCAUOU2hpcFBvc3RhbENvZGUfCQUO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" />
 

<script type="text/javascript">

<!--

var theForm = document.forms['Form1'];

if (!theForm) {

    theForm = document.Form1;

}

function __doPostBack(eventTarget, eventArgument) {

    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {

        theForm.__EVENTTARGET.value = eventTarget;

        theForm.__EVENTARGUMENT.value = eventArgument;

        theForm.submit();

    }

}

// -->

</script>
 
 

<script language=JavaScript src=ScrollingGrid.js></script>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWMQKLl+XgBQKyuN+/BQKxuN+/BQK0uN+/BQKzuN+/BQK2uN+/BQK1uN+/BQK4uN+/BQK3uN+/BQKquN+/BQKpuN+/BQKxuJ/BBQKxuJvBBQKxuJfBBQKxuJPBBQL1/q2/DwL1/qm/DwL1/qW/DwL1/qG/DwL1/p2/DwL1/pm/DwL1/pW/DwL1/pG/DwL1/o2/DwLLyonXAQK0+ZbpCgK0+ZrpCgK0+Y7pCgK0+ZLpCgK0+YbpCgK0+YrpCgK0+f7oCgK0+YLpCgK0+bbpCgK0+brpCgKI5/fBCQLt/dmsDwLSlLyXBQK3q56CCwLQmYHxDwK1sOPbBQKax8XGCwLXp5bbAgK8vvjFCAKh1dqwDgKG7LybBALDzI2wCwKo4++aAQLQmcHZDT7UZbw1cEbPbG0HgNXx9xDp7NZD" />
 
 

	
 

		Variable width & height ScrollingGrid within a table. Control is set to update the last scroll position on postback.<br>

		<br>
 

		<table id=sdd name=ScrollingGrid style='width:100%; table-layout:fixed' cellpadding=0 cellspacing=0 border=0><tr><td>

<div id=sdd$divHdr style='overflow:hidden;margin-right:17px;'>

<table cellpadding=0 cellspacing=0 id=sdd$headerCntr><tr><td><table id=sdd$tblHdr border='0' cellpadding='2' cellspacing='0'  style='border-collapse:collapse;'> <tr></tr></table></td></tr></table>
 

</div>

<div id=sdd$divContent style='height:190px;overflow:scroll;' onscroll='updateScroll(this, "sdd")'><table cellpadding=0 cellspacing=0 id=sdd$contentCntr><tr><td>
 

			<table cellspacing="0" cellpadding="2" border="0" id="Grid2" style="border-width:0px;border-collapse:collapse;">

	<tr style="color:White;background-color:Red;font-weight:bold;">

		<td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl0','')" style="color:White;">OrderID</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl1','')" style="color:White;">CustomerID</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl2','')" style="color:White;">EmployeeID</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl3','')" style="color:White;">OrderDate</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl4','')" style="color:White;">RequiredDate</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl5','')" style="color:White;">ShippedDate</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl6','')" style="color:White;">ShipVia</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl7','')" style="color:White;">Freight</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl8','')" style="color:White;">ShipName</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl9','')" style="color:White;">ShipAddress</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl10','')" style="color:White;">ShipCity</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl11','')" style="color:White;">ShipRegion</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl12','')" style="color:White;">ShipPostalCode</a></td><td><a href="javascript:__doPostBack('Grid2$_ctl2$_ctl13','')" style="color:White;">ShipCountry</a></td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10248</td><td>VINET</td><td>5</td><td>1996/07/04 12:00:00 AM</td><td>1996/08/01 12:00:00 AM</td><td>1996/07/16 12:00:00 AM</td><td>3</td><td>32.38</td><td>Vins et alcools Chevalier</td><td>59 rue de l'Abbaye</td><td>Reims</td><td>&nbsp;</td><td>51100</td><td>France</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10249</td><td>TOMSP</td><td>6</td><td>1996/07/05 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>1996/07/10 12:00:00 AM</td><td>1</td><td>11.61</td><td>Toms Spezialitäten</td><td>Luisenstr. 48</td><td>Münster</td><td>&nbsp;</td><td>44087</td><td>Germany</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10250</td><td>HANAR</td><td>4</td><td>1996/07/08 12:00:00 AM</td><td>1996/08/05 12:00:00 AM</td><td>1996/07/12 12:00:00 AM</td><td>2</td><td>65.83</td><td>Hanari Carnes</td><td>Rua do Paço, 67</td><td>Rio de Janeiro</td><td>RJ</td><td>05454-876</td><td>Brazil</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10251</td><td>VICTE</td><td>3</td><td>1996/07/08 12:00:00 AM</td><td>1996/08/05 12:00:00 AM</td><td>1996/07/15 12:00:00 AM</td><td>1</td><td>41.34</td><td>Victuailles en stock</td><td>2, rue du Commerce</td><td>Lyon</td><td>&nbsp;</td><td>69004</td><td>France</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10252</td><td>SUPRD</td><td>4</td><td>1996/07/09 12:00:00 AM</td><td>1996/08/06 12:00:00 AM</td><td>1996/07/11 12:00:00 AM</td><td>2</td><td>51.3</td><td>Suprêmes délices</td><td>Boulevard Tirou, 255</td><td>Charleroi</td><td>&nbsp;</td><td>B-6000</td><td>Belgium</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10253</td><td>HANAR</td><td>3</td><td>1996/07/10 12:00:00 AM</td><td>1996/07/24 12:00:00 AM</td><td>1996/07/16 12:00:00 AM</td><td>2</td><td>58.17</td><td>Hanari Carnes</td><td>Rua do Paço, 67</td><td>Rio de Janeiro</td><td>RJ</td><td>05454-876</td><td>Brazil</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10254</td><td>CHOPS</td><td>5</td><td>1996/07/11 12:00:00 AM</td><td>1996/08/08 12:00:00 AM</td><td>1996/07/23 12:00:00 AM</td><td>2</td><td>22.98</td><td>Chop-suey Chinese</td><td>Hauptstr. 31</td><td>Bern</td><td>&nbsp;</td><td>3012</td><td>Switzerland</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10255</td><td>RICSU</td><td>9</td><td>1996/07/12 12:00:00 AM</td><td>1996/08/09 12:00:00 AM</td><td>1996/07/15 12:00:00 AM</td><td>3</td><td>148.33</td><td>Richter Supermarkt</td><td>Starenweg 5</td><td>Genève</td><td>&nbsp;</td><td>1204</td><td>Switzerland</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10256</td><td>WELLI</td><td>3</td><td>1996/07/15 12:00:00 AM</td><td>1996/08/12 12:00:00 AM</td><td>1996/07/17 12:00:00 AM</td><td>2</td><td>13.97</td><td>Wellington Importadora</td><td>Rua do Mercado, 12</td><td>Resende</td><td>SP</td><td>08737-363</td><td>Brazil</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10257</td><td>HILAA</td><td>4</td><td>1996/07/16 12:00:00 AM</td><td>1996/08/13 12:00:00 AM</td><td>1996/07/22 12:00:00 AM</td><td>3</td><td>81.91</td><td>HILARION-Abastos</td><td>Carrera 22 con Ave. Carlos Soublette #8-35</td><td>San Cristóbal</td><td>Táchira</td><td>5022</td><td>Venezuela</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10258</td><td>ERNSH</td><td>1</td><td>1996/07/17 12:00:00 AM</td><td>1996/08/14 12:00:00 AM</td><td>1996/07/23 12:00:00 AM</td><td>1</td><td>140.51</td><td>Ernst Handel</td><td>Kirchgasse 6</td><td>Graz</td><td>&nbsp;</td><td>8010</td><td>Austria</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10259</td><td>CENTC</td><td>4</td><td>1996/07/18 12:00:00 AM</td><td>1996/08/15 12:00:00 AM</td><td>1996/07/25 12:00:00 AM</td><td>3</td><td>3.25</td><td>Centro comercial Moctezuma</td><td>Sierras de Granada 9993</td><td>México D.F.</td><td>&nbsp;</td><td>05022</td><td>Mexico</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10260</td><td>OTTIK</td><td>4</td><td>1996/07/19 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>1996/07/29 12:00:00 AM</td><td>1</td><td>55.09</td><td>Ottilies Käseladen</td><td>Mehrheimerstr. 369</td><td>Köln</td><td>&nbsp;</td><td>50739</td><td>Germany</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10261</td><td>QUEDE</td><td>4</td><td>1996/07/19 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>1996/07/30 12:00:00 AM</td><td>2</td><td>3.05</td><td>Que Delícia</td><td>Rua da Panificadora, 12</td><td>Rio de Janeiro</td><td>RJ</td><td>02389-673</td><td>Brazil</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10262</td><td>RATTC</td><td>8</td><td>1996/07/22 12:00:00 AM</td><td>1996/08/19 12:00:00 AM</td><td>1996/07/25 12:00:00 AM</td><td>3</td><td>48.29</td><td>Rattlesnake Canyon Grocery</td><td>2817 Milton Dr.</td><td>Albuquerque</td><td>NM</td><td>87110</td><td>USA</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10263</td><td>ERNSH</td><td>9</td><td>1996/07/23 12:00:00 AM</td><td>1996/08/20 12:00:00 AM</td><td>1996/07/31 12:00:00 AM</td><td>3</td><td>146.06</td><td>Ernst Handel</td><td>Kirchgasse 6</td><td>Graz</td><td>&nbsp;</td><td>8010</td><td>Austria</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10264</td><td>FOLKO</td><td>6</td><td>1996/07/24 12:00:00 AM</td><td>1996/08/21 12:00:00 AM</td><td>1996/08/23 12:00:00 AM</td><td>3</td><td>3.67</td><td>Folk och fä HB</td><td>Åkergatan 24</td><td>Bräcke</td><td>&nbsp;</td><td>S-844 67</td><td>Sweden</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10265</td><td>BLONP</td><td>2</td><td>1996/07/25 12:00:00 AM</td><td>1996/08/22 12:00:00 AM</td><td>1996/08/12 12:00:00 AM</td><td>1</td><td>55.28</td><td>Blondel père et fils</td><td>24, place Kléber</td><td>Strasbourg</td><td>&nbsp;</td><td>67000</td><td>France</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10266</td><td>WARTH</td><td>3</td><td>1996/07/26 12:00:00 AM</td><td>1996/09/06 12:00:00 AM</td><td>1996/07/31 12:00:00 AM</td><td>3</td><td>25.73</td><td>Wartian Herkku</td><td>Torikatu 38</td><td>Oulu</td><td>&nbsp;</td><td>90110</td><td>Finland</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10267</td><td>FRANK</td><td>4</td><td>1996/07/29 12:00:00 AM</td><td>1996/08/26 12:00:00 AM</td><td>1996/08/06 12:00:00 AM</td><td>1</td><td>208.58</td><td>Frankenversand</td><td>Berliner Platz 43</td><td>München</td><td>&nbsp;</td><td>80805</td><td>Germany</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10268</td><td>GROSR</td><td>8</td><td>1996/07/30 12:00:00 AM</td><td>1996/08/27 12:00:00 AM</td><td>1996/08/02 12:00:00 AM</td><td>3</td><td>66.29</td><td>GROSELLA-Restaurante</td><td>5ª Ave. Los Palos Grandes</td><td>Caracas</td><td>DF</td><td>1081</td><td>Venezuela</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10269</td><td>WHITC</td><td>5</td><td>1996/07/31 12:00:00 AM</td><td>1996/08/14 12:00:00 AM</td><td>1996/08/09 12:00:00 AM</td><td>1</td><td>4.56</td><td>White Clover Markets</td><td>1029 - 12th Ave. S.</td><td>Seattle</td><td>WA</td><td>98124</td><td>USA</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10270</td><td>WARTH</td><td>1</td><td>1996/08/01 12:00:00 AM</td><td>1996/08/29 12:00:00 AM</td><td>1996/08/02 12:00:00 AM</td><td>1</td><td>136.54</td><td>Wartian Herkku</td><td>Torikatu 38</td><td>Oulu</td><td>&nbsp;</td><td>90110</td><td>Finland</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10271</td><td>SPLIR</td><td>6</td><td>1996/08/01 12:00:00 AM</td><td>1996/08/29 12:00:00 AM</td><td>1996/08/30 12:00:00 AM</td><td>2</td><td>4.54</td><td>Split Rail Beer & Ale</td><td>P.O. Box 555</td><td>Lander</td><td>WY</td><td>82520</td><td>USA</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10272</td><td>RATTC</td><td>6</td><td>1996/08/02 12:00:00 AM</td><td>1996/08/30 12:00:00 AM</td><td>1996/08/06 12:00:00 AM</td><td>2</td><td>98.03</td><td>Rattlesnake Canyon Grocery</td><td>2817 Milton Dr.</td><td>Albuquerque</td><td>NM</td><td>87110</td><td>USA</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10273</td><td>QUICK</td><td>3</td><td>1996/08/05 12:00:00 AM</td><td>1996/09/02 12:00:00 AM</td><td>1996/08/12 12:00:00 AM</td><td>3</td><td>76.07</td><td>QUICK-Stop</td><td>Taucherstraße 10</td><td>Cunewalde</td><td>&nbsp;</td><td>01307</td><td>Germany</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10274</td><td>VINET</td><td>6</td><td>1996/08/06 12:00:00 AM</td><td>1996/09/03 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>1</td><td>6.01</td><td>Vins et alcools Chevalier</td><td>59 rue de l'Abbaye</td><td>Reims</td><td>&nbsp;</td><td>51100</td><td>France</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10275</td><td>MAGAA</td><td>1</td><td>1996/08/07 12:00:00 AM</td><td>1996/09/04 12:00:00 AM</td><td>1996/08/09 12:00:00 AM</td><td>1</td><td>26.93</td><td>Magazzini Alimentari Riuniti</td><td>Via Ludovico il Moro 22</td><td>Bergamo</td><td>&nbsp;</td><td>24100</td><td>Italy</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10276</td><td>TORTU</td><td>8</td><td>1996/08/08 12:00:00 AM</td><td>1996/08/22 12:00:00 AM</td><td>1996/08/14 12:00:00 AM</td><td>3</td><td>13.84</td><td>Tortuga Restaurante</td><td>Avda. Azteca 123</td><td>México D.F.</td><td>&nbsp;</td><td>05033</td><td>Mexico</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10277</td><td>MORGK</td><td>2</td><td>1996/08/09 12:00:00 AM</td><td>1996/09/06 12:00:00 AM</td><td>1996/08/13 12:00:00 AM</td><td>3</td><td>125.77</td><td>Morgenstern Gesundkost</td><td>Heerstr. 22</td><td>Leipzig</td><td>&nbsp;</td><td>04179</td><td>Germany</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10278</td><td>BERGS</td><td>8</td><td>1996/08/12 12:00:00 AM</td><td>1996/09/09 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>2</td><td>92.69</td><td>Berglunds snabbköp</td><td>Berguvsvägen  8</td><td>Luleå</td><td>&nbsp;</td><td>S-958 22</td><td>Sweden</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10279</td><td>LEHMS</td><td>8</td><td>1996/08/13 12:00:00 AM</td><td>1996/09/10 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>2</td><td>25.83</td><td>Lehmanns Marktstand</td><td>Magazinweg 7</td><td>Frankfurt a.M.</td><td>&nbsp;</td><td>60528</td><td>Germany</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10280</td><td>BERGS</td><td>2</td><td>1996/08/14 12:00:00 AM</td><td>1996/09/11 12:00:00 AM</td><td>1996/09/12 12:00:00 AM</td><td>1</td><td>8.98</td><td>Berglunds snabbköp</td><td>Berguvsvägen  8</td><td>Luleå</td><td>&nbsp;</td><td>S-958 22</td><td>Sweden</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10281</td><td>ROMEY</td><td>4</td><td>1996/08/14 12:00:00 AM</td><td>1996/08/28 12:00:00 AM</td><td>1996/08/21 12:00:00 AM</td><td>1</td><td>2.94</td><td>Romero y tomillo</td><td>Gran Vía, 1</td><td>Madrid</td><td>&nbsp;</td><td>28001</td><td>Spain</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10282</td><td>ROMEY</td><td>4</td><td>1996/08/15 12:00:00 AM</td><td>1996/09/12 12:00:00 AM</td><td>1996/08/21 12:00:00 AM</td><td>1</td><td>12.69</td><td>Romero y tomillo</td><td>Gran Vía, 1</td><td>Madrid</td><td>&nbsp;</td><td>28001</td><td>Spain</td>
 

	</tr><tr style="color:White;background-color:Silver;">

		<td><span>1</span>&nbsp;<a href="javascript:__doPostBack('Grid2$_ctl39$_ctl1','')" style="color:White;">2</a>&nbsp;<a href="javascript:__doPostBack('Grid2$_ctl39$_ctl2','')" style="color:White;">3</a>&nbsp;<a href="javascript:__doPostBack('Grid2$_ctl39$_ctl3','')" style="color:White;">4</a>&nbsp;<a href="javascript:__doPostBack('Grid2$_ctl39$_ctl4','')" style="color:White;">5</a>&nbsp;<a href="javascript:__doPostBack('Grid2$_ctl39$_ctl5','')" style="color:White;">6</a>&nbsp;<a href="javascript:__doPostBack('Grid2$_ctl39$_ctl6','')" style="color:White;">7</a>&nbsp;<a href="javascript:__doPostBack('Grid2$_ctl39$_ctl7','')" style="color:White;">8</a>&nbsp;<a href="javascript:__doPostBack('Grid2$_ctl39$_ctl8','')" style="color:White;">9</a>&nbsp;<a href="javascript:__doPostBack('Grid2$_ctl39$_ctl9','')" style="color:White;">10</a>&nbsp;<a href="javascript:__doPostBack('Grid2$_ctl39$_ctl10','')" style="color:White;">...</a></td>

	</tr>
 

</table>
 

		</td></tr></table>

</div>

<input type=hidden name=sdd$hdnScrollPos id=sdd$hdnScrollPos>

<table id=sdd$tblPager cellpadding=2 cellspacing=0 style='width:100%;'> <tr></tr></table>

<script language=javascript>

<!--

 setTimeout("initScrollingGrid('sdd', 'Grid2', true)", 50) 

//--></script></td></tr></table>
 
 
 

		<script language=javascript>

		<!--

		setTimeout("sg1_updateHeight()", 100)

		//--></script>
 

	
 
 

	<br>
 
 

	
 

ScrollingGrid within a User control.<br>
 
 

<table id=DemoControl1_sg1 name=ScrollingGrid style='width:100%; table-layout:fixed' cellpadding=0 cellspacing=0 border=0><tr><td>

<div id=DemoControl1_sg1$divHdr style='overflow:hidden;'>

<table cellpadding=0 cellspacing=0 id=DemoControl1_sg1$headerCntr><tr><td><table id=DemoControl1_sg1$tblHdr border='0' cellpadding='5' cellspacing='1' > <tr></tr></table></td></tr></table>

</div>

<div id=DemoControl1_sg1$divContent style='height:140px;overflow:scroll;' onscroll='updateScroll(this, "DemoControl1_sg1")'><table cellpadding=0 cellspacing=0 id=DemoControl1_sg1$contentCntr><tr><td>
 

	<table cellspacing="1" cellpadding="5" border="0" id="DemoControl1_Grid2" style="border-width:0px;">

	<tr style="color:White;background-color:Fuchsia;font-weight:bold;">

		<td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl0','')" style="color:White;">OrderID</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl1','')" style="color:White;">CustomerID</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl2','')" style="color:White;">EmployeeID</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl3','')" style="color:White;">OrderDate</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl4','')" style="color:White;">RequiredDate</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl5','')" style="color:White;">ShippedDate</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl6','')" style="color:White;">ShipVia</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl7','')" style="color:White;">Freight</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl8','')" style="color:White;">ShipName</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl9','')" style="color:White;">ShipAddress</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl10','')" style="color:White;">ShipCity</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl11','')" style="color:White;">ShipRegion</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl12','')" style="color:White;">ShipPostalCode</a></td><td><a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl2$_ctl13','')" style="color:White;">ShipCountry</a></td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10248</td><td>VINET</td><td>5</td><td>1996/07/04 12:00:00 AM</td><td>1996/08/01 12:00:00 AM</td><td>1996/07/16 12:00:00 AM</td><td>3</td><td>32.38</td><td>Vins et alcools Chevalier</td><td>59 rue de l'Abbaye</td><td>Reims</td><td>&nbsp;</td><td>51100</td><td>France</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10249</td><td>TOMSP</td><td>6</td><td>1996/07/05 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>1996/07/10 12:00:00 AM</td><td>1</td><td>11.61</td><td>Toms Spezialitäten</td><td>Luisenstr. 48</td><td>Münster</td><td>&nbsp;</td><td>44087</td><td>Germany</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10250</td><td>HANAR</td><td>4</td><td>1996/07/08 12:00:00 AM</td><td>1996/08/05 12:00:00 AM</td><td>1996/07/12 12:00:00 AM</td><td>2</td><td>65.83</td><td>Hanari Carnes</td><td>Rua do Paço, 67</td><td>Rio de Janeiro</td><td>RJ</td><td>05454-876</td><td>Brazil</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10251</td><td>VICTE</td><td>3</td><td>1996/07/08 12:00:00 AM</td><td>1996/08/05 12:00:00 AM</td><td>1996/07/15 12:00:00 AM</td><td>1</td><td>41.34</td><td>Victuailles en stock</td><td>2, rue du Commerce</td><td>Lyon</td><td>&nbsp;</td><td>69004</td><td>France</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10252</td><td>SUPRD</td><td>4</td><td>1996/07/09 12:00:00 AM</td><td>1996/08/06 12:00:00 AM</td><td>1996/07/11 12:00:00 AM</td><td>2</td><td>51.3</td><td>Suprêmes délices</td><td>Boulevard Tirou, 255</td><td>Charleroi</td><td>&nbsp;</td><td>B-6000</td><td>Belgium</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10253</td><td>HANAR</td><td>3</td><td>1996/07/10 12:00:00 AM</td><td>1996/07/24 12:00:00 AM</td><td>1996/07/16 12:00:00 AM</td><td>2</td><td>58.17</td><td>Hanari Carnes</td><td>Rua do Paço, 67</td><td>Rio de Janeiro</td><td>RJ</td><td>05454-876</td><td>Brazil</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10254</td><td>CHOPS</td><td>5</td><td>1996/07/11 12:00:00 AM</td><td>1996/08/08 12:00:00 AM</td><td>1996/07/23 12:00:00 AM</td><td>2</td><td>22.98</td><td>Chop-suey Chinese</td><td>Hauptstr. 31</td><td>Bern</td><td>&nbsp;</td><td>3012</td><td>Switzerland</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10255</td><td>RICSU</td><td>9</td><td>1996/07/12 12:00:00 AM</td><td>1996/08/09 12:00:00 AM</td><td>1996/07/15 12:00:00 AM</td><td>3</td><td>148.33</td><td>Richter Supermarkt</td><td>Starenweg 5</td><td>Genève</td><td>&nbsp;</td><td>1204</td><td>Switzerland</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10256</td><td>WELLI</td><td>3</td><td>1996/07/15 12:00:00 AM</td><td>1996/08/12 12:00:00 AM</td><td>1996/07/17 12:00:00 AM</td><td>2</td><td>13.97</td><td>Wellington Importadora</td><td>Rua do Mercado, 12</td><td>Resende</td><td>SP</td><td>08737-363</td><td>Brazil</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10257</td><td>HILAA</td><td>4</td><td>1996/07/16 12:00:00 AM</td><td>1996/08/13 12:00:00 AM</td><td>1996/07/22 12:00:00 AM</td><td>3</td><td>81.91</td><td>HILARION-Abastos</td><td>Carrera 22 con Ave. Carlos Soublette #8-35</td><td>San Cristóbal</td><td>Táchira</td><td>5022</td><td>Venezuela</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10258</td><td>ERNSH</td><td>1</td><td>1996/07/17 12:00:00 AM</td><td>1996/08/14 12:00:00 AM</td><td>1996/07/23 12:00:00 AM</td><td>1</td><td>140.51</td><td>Ernst Handel</td><td>Kirchgasse 6</td><td>Graz</td><td>&nbsp;</td><td>8010</td><td>Austria</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10259</td><td>CENTC</td><td>4</td><td>1996/07/18 12:00:00 AM</td><td>1996/08/15 12:00:00 AM</td><td>1996/07/25 12:00:00 AM</td><td>3</td><td>3.25</td><td>Centro comercial Moctezuma</td><td>Sierras de Granada 9993</td><td>México D.F.</td><td>&nbsp;</td><td>05022</td><td>Mexico</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10260</td><td>OTTIK</td><td>4</td><td>1996/07/19 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>1996/07/29 12:00:00 AM</td><td>1</td><td>55.09</td><td>Ottilies Käseladen</td><td>Mehrheimerstr. 369</td><td>Köln</td><td>&nbsp;</td><td>50739</td><td>Germany</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10261</td><td>QUEDE</td><td>4</td><td>1996/07/19 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>1996/07/30 12:00:00 AM</td><td>2</td><td>3.05</td><td>Que Delícia</td><td>Rua da Panificadora, 12</td><td>Rio de Janeiro</td><td>RJ</td><td>02389-673</td><td>Brazil</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10262</td><td>RATTC</td><td>8</td><td>1996/07/22 12:00:00 AM</td><td>1996/08/19 12:00:00 AM</td><td>1996/07/25 12:00:00 AM</td><td>3</td><td>48.29</td><td>Rattlesnake Canyon Grocery</td><td>2817 Milton Dr.</td><td>Albuquerque</td><td>NM</td><td>87110</td><td>USA</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10263</td><td>ERNSH</td><td>9</td><td>1996/07/23 12:00:00 AM</td><td>1996/08/20 12:00:00 AM</td><td>1996/07/31 12:00:00 AM</td><td>3</td><td>146.06</td><td>Ernst Handel</td><td>Kirchgasse 6</td><td>Graz</td><td>&nbsp;</td><td>8010</td><td>Austria</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10264</td><td>FOLKO</td><td>6</td><td>1996/07/24 12:00:00 AM</td><td>1996/08/21 12:00:00 AM</td><td>1996/08/23 12:00:00 AM</td><td>3</td><td>3.67</td><td>Folk och fä HB</td><td>Åkergatan 24</td><td>Bräcke</td><td>&nbsp;</td><td>S-844 67</td><td>Sweden</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10265</td><td>BLONP</td><td>2</td><td>1996/07/25 12:00:00 AM</td><td>1996/08/22 12:00:00 AM</td><td>1996/08/12 12:00:00 AM</td><td>1</td><td>55.28</td><td>Blondel père et fils</td><td>24, place Kléber</td><td>Strasbourg</td><td>&nbsp;</td><td>67000</td><td>France</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10266</td><td>WARTH</td><td>3</td><td>1996/07/26 12:00:00 AM</td><td>1996/09/06 12:00:00 AM</td><td>1996/07/31 12:00:00 AM</td><td>3</td><td>25.73</td><td>Wartian Herkku</td><td>Torikatu 38</td><td>Oulu</td><td>&nbsp;</td><td>90110</td><td>Finland</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10267</td><td>FRANK</td><td>4</td><td>1996/07/29 12:00:00 AM</td><td>1996/08/26 12:00:00 AM</td><td>1996/08/06 12:00:00 AM</td><td>1</td><td>208.58</td><td>Frankenversand</td><td>Berliner Platz 43</td><td>München</td><td>&nbsp;</td><td>80805</td><td>Germany</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10268</td><td>GROSR</td><td>8</td><td>1996/07/30 12:00:00 AM</td><td>1996/08/27 12:00:00 AM</td><td>1996/08/02 12:00:00 AM</td><td>3</td><td>66.29</td><td>GROSELLA-Restaurante</td><td>5ª Ave. Los Palos Grandes</td><td>Caracas</td><td>DF</td><td>1081</td><td>Venezuela</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10269</td><td>WHITC</td><td>5</td><td>1996/07/31 12:00:00 AM</td><td>1996/08/14 12:00:00 AM</td><td>1996/08/09 12:00:00 AM</td><td>1</td><td>4.56</td><td>White Clover Markets</td><td>1029 - 12th Ave. S.</td><td>Seattle</td><td>WA</td><td>98124</td><td>USA</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10270</td><td>WARTH</td><td>1</td><td>1996/08/01 12:00:00 AM</td><td>1996/08/29 12:00:00 AM</td><td>1996/08/02 12:00:00 AM</td><td>1</td><td>136.54</td><td>Wartian Herkku</td><td>Torikatu 38</td><td>Oulu</td><td>&nbsp;</td><td>90110</td><td>Finland</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10271</td><td>SPLIR</td><td>6</td><td>1996/08/01 12:00:00 AM</td><td>1996/08/29 12:00:00 AM</td><td>1996/08/30 12:00:00 AM</td><td>2</td><td>4.54</td><td>Split Rail Beer & Ale</td><td>P.O. Box 555</td><td>Lander</td><td>WY</td><td>82520</td><td>USA</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10272</td><td>RATTC</td><td>6</td><td>1996/08/02 12:00:00 AM</td><td>1996/08/30 12:00:00 AM</td><td>1996/08/06 12:00:00 AM</td><td>2</td><td>98.03</td><td>Rattlesnake Canyon Grocery</td><td>2817 Milton Dr.</td><td>Albuquerque</td><td>NM</td><td>87110</td><td>USA</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10273</td><td>QUICK</td><td>3</td><td>1996/08/05 12:00:00 AM</td><td>1996/09/02 12:00:00 AM</td><td>1996/08/12 12:00:00 AM</td><td>3</td><td>76.07</td><td>QUICK-Stop</td><td>Taucherstraße 10</td><td>Cunewalde</td><td>&nbsp;</td><td>01307</td><td>Germany</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10274</td><td>VINET</td><td>6</td><td>1996/08/06 12:00:00 AM</td><td>1996/09/03 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>1</td><td>6.01</td><td>Vins et alcools Chevalier</td><td>59 rue de l'Abbaye</td><td>Reims</td><td>&nbsp;</td><td>51100</td><td>France</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10275</td><td>MAGAA</td><td>1</td><td>1996/08/07 12:00:00 AM</td><td>1996/09/04 12:00:00 AM</td><td>1996/08/09 12:00:00 AM</td><td>1</td><td>26.93</td><td>Magazzini Alimentari Riuniti</td><td>Via Ludovico il Moro 22</td><td>Bergamo</td><td>&nbsp;</td><td>24100</td><td>Italy</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10276</td><td>TORTU</td><td>8</td><td>1996/08/08 12:00:00 AM</td><td>1996/08/22 12:00:00 AM</td><td>1996/08/14 12:00:00 AM</td><td>3</td><td>13.84</td><td>Tortuga Restaurante</td><td>Avda. Azteca 123</td><td>México D.F.</td><td>&nbsp;</td><td>05033</td><td>Mexico</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10277</td><td>MORGK</td><td>2</td><td>1996/08/09 12:00:00 AM</td><td>1996/09/06 12:00:00 AM</td><td>1996/08/13 12:00:00 AM</td><td>3</td><td>125.77</td><td>Morgenstern Gesundkost</td><td>Heerstr. 22</td><td>Leipzig</td><td>&nbsp;</td><td>04179</td><td>Germany</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10278</td><td>BERGS</td><td>8</td><td>1996/08/12 12:00:00 AM</td><td>1996/09/09 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>2</td><td>92.69</td><td>Berglunds snabbköp</td><td>Berguvsvägen  8</td><td>Luleå</td><td>&nbsp;</td><td>S-958 22</td><td>Sweden</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10279</td><td>LEHMS</td><td>8</td><td>1996/08/13 12:00:00 AM</td><td>1996/09/10 12:00:00 AM</td><td>1996/08/16 12:00:00 AM</td><td>2</td><td>25.83</td><td>Lehmanns Marktstand</td><td>Magazinweg 7</td><td>Frankfurt a.M.</td><td>&nbsp;</td><td>60528</td><td>Germany</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10280</td><td>BERGS</td><td>2</td><td>1996/08/14 12:00:00 AM</td><td>1996/09/11 12:00:00 AM</td><td>1996/09/12 12:00:00 AM</td><td>1</td><td>8.98</td><td>Berglunds snabbköp</td><td>Berguvsvägen  8</td><td>Luleå</td><td>&nbsp;</td><td>S-958 22</td><td>Sweden</td>
 

	</tr><tr style="background-color:#EEEEEE;">

		<td>10281</td><td>ROMEY</td><td>4</td><td>1996/08/14 12:00:00 AM</td><td>1996/08/28 12:00:00 AM</td><td>1996/08/21 12:00:00 AM</td><td>1</td><td>2.94</td><td>Romero y tomillo</td><td>Gran Vía, 1</td><td>Madrid</td><td>&nbsp;</td><td>28001</td><td>Spain</td>
 

	</tr><tr style="background-color:#FEFEFE;">

		<td>10282</td><td>ROMEY</td><td>4</td><td>1996/08/15 12:00:00 AM</td><td>1996/09/12 12:00:00 AM</td><td>1996/08/21 12:00:00 AM</td><td>1</td><td>12.69</td><td>Romero y tomillo</td><td>Gran Vía, 1</td><td>Madrid</td><td>&nbsp;</td><td>28001</td><td>Spain</td>
 

	</tr><tr style="color:White;background-color:Silver;">

		<td><span>1</span>&nbsp;<a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl39$_ctl1','')" style="color:White;">2</a>&nbsp;<a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl39$_ctl2','')" style="color:White;">3</a>&nbsp;<a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl39$_ctl3','')" style="color:White;">4</a>&nbsp;<a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl39$_ctl4','')" style="color:White;">5</a>&nbsp;<a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl39$_ctl5','')" style="color:White;">6</a>&nbsp;<a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl39$_ctl6','')" style="color:White;">7</a>&nbsp;<a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl39$_ctl7','')" style="color:White;">8</a>&nbsp;<a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl39$_ctl8','')" style="color:White;">9</a>&nbsp;<a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl39$_ctl9','')" style="color:White;">10</a>&nbsp;<a href="javascript:__doPostBack('DemoControl1$Grid2$_ctl39$_ctl10','')" style="color:White;">...</a></td>

	</tr>
 

</table>
 

</td></tr></table>

</div>

<input type=hidden name=DemoControl1_sg1$hdnScrollPos id=DemoControl1_sg1$hdnScrollPos>

<table id=DemoControl1_sg1$tblPager cellpadding=5 cellspacing=1 style='width:100%;'> <tr></tr></table>

<script language=javascript>

<!--

 setTimeout("initScrollingGrid('DemoControl1_sg1', 'DemoControl1_Grid2', true)", 50) 

//--></script></td></tr></table>
 
 
 
 
 

</form>
 
 

<br>
 
 

<div style="padding:5px; background-color:#eeeeee">
 

	<h1 style="font-size:14px; margin:0">Simple implementation - just wrap the ScrollingGrid control around your existing DataGrid control:</h1>

	<br>
 

	&lt;avg:ScrollingGrid ID=sg1 runat=server Width=95% Height=190 HeaderWidthReduction=17&gt;<br>

	<br>

	&nbsp;&lt;asp:DataGrid runat=server ID=Grid2 CellPadding=5 CellSpacing=1<br>
 

	&nbsp;&nbsp;AutoGenerateColumns=True AllowSorting=True AllowPaging=True PageSize=35<br>

	&nbsp;&nbsp;OnPageIndexChanged=Grid2_PageIndexChanged OnSortCommand=Grid2_Sort&gt;<br>

	&nbsp;&nbsp;&nbsp;&nbsp;&lt;HeaderStyle BackColor=red ForeColor=white Font-Bold=True /&gt;<br>

	&nbsp;&nbsp;&nbsp;&nbsp;&lt;ItemStyle BackColor=#fefefe /&gt;<br>

	&nbsp;&nbsp;&nbsp;&nbsp;&lt;AlternatingItemStyle BackColor=#eeeeee /&gt;<br>

	&nbsp;&nbsp;&nbsp;&nbsp;&lt;PagerStyle BackColor=silver ForeColor=White Mode=NumericPages /&gt;<br>
 

	&nbsp;&lt;/asp:DataGrid&gt;<br>

	<br>

	&lt;/avg:ScrollingGrid&gt;<br>
 

</div>
 

<br><br>
 
 

</body>

</html>

Open in new window

0
 
LVL 12

Accepted Solution

by:
Cyber-spy earned 200 total points
ID: 24143927
@Allanmark,

This was just what we needed.
I saved to versions of the HTML, one with each of the DTD (HTML 4 and  XHTML 1)
With no other changes, the pages displayed just as you described. This worked in IE7, FF3 & Google Chrome. Opera displayed both versions correctly.

Then, by removing large chunks of HTML to simplify the page, then playing with what was left, removing just the

tr { font-size:0.7em; }

line fixed the problem in all browsers - i.e. both versions of the page displayed correctly and identically.

If this doesn't work when you change the DTD in the original ASPX page, then it is possible that ASP.Net is rendering the page slightly differently, depending on the DTD selected (which would make sense).

In this case, you should compare the rendered HTML of the the versions of the page to see what the differences are.

0
 

Author Comment

by:allanmark
ID: 24144956
Cyber-spy

Fantastic!!!!!

Did as you suggested -  remove dthe line and ran it.

FF works 100%.

IE7 displays the page, correctly, but then immediately freezes up and has to be killed off via the Task Manager.  Since it's working in IE7 with you, it's obviously something in my configuration. Any thopughts?

0
 

Author Comment

by:allanmark
ID: 24145176
An update .....

After attempting to browse in IE, I forgot to kill the attempt off and carried on with other things. After about 15 minutes, the page displayed ... weirdly and behaving strangely...

The first grid displays with an extended scrolbar (see attched jpg) and a left-right scrollbar that doesn't work.

The 2nd grid displays correctly and one can scrioll left/right and up/down, but the scroll bar position marker doesn't move.

0
 
LVL 12

Expert Comment

by:Cyber-spy
ID: 24147384
As my page was static HTML page, with nothing being generated on the server, and nothing to react to if I clicked any buttons, I can't recreate these behavioural problems. The static pages did however display correctly in IE7

Before you go any further, you might want to try restarting IIS to make sure there are no stray processes around, and then try loading the page again.

As the removal of that one line would not have caused these problems, I think this is another issue.
0
 

Author Comment

by:allanmark
ID: 24148300
I'm not running IIS  --- file-based system as my home PC is still on XP Home. Could this be an issue?


I am happy that this issue is now resolved and want to close it off. Can you suggest an appropriate zone for the "hanging up in IE" issue?
0
 
LVL 42

Assisted Solution

by:David S.
David S. earned 150 total points
ID: 24152989
> Can you suggest an appropriate zone for the "hanging up in IE" issue?

The Internet Explorer zone: http://www.experts-exchange.com/Software/Internet_Email/Web_Browsers/Internet_Explorer/
0
 

Author Closing Comment

by:allanmark
ID: 31569349
Many thanks for all your efforts! APologies for taking so long to close this.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Building a website can seem like a daunting task to the uninitiated but it really only requires knowledge of two basic languages: HTML and CSS.
This article discusses how to create an extensible mechanism for linked drop downs.
The viewer will learn how to count occurrences of each item in an array.
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now