Click here to Skip to main content
15,895,011 members
Articles / Desktop Programming / Windows Forms

DataGridView Custom Headers in VB.NET

Rate me:
Please Sign up or sign in to vote.
4.56/5 (16 votes)
9 Mar 2009CPOL3 min read 185.7K   8.7K   47  
How to give Custom Headers to your DataGridView
var MinPreHeight = 450;
var MinPreChars  = 750;

var PreOpen = new Image();
var PreClose = new Image();
var PreCopy = new Image();
PreOpen.src="/images/plus.gif";
PreClose.src = "/images/minus.gif";
PreCopy.src = "/images/copy_16.png";

function togglePre()
{
	var id = this.getAttribute("preid");
	var preelm = document.getElementById("pre" + id);
	var imgelm = document.getElementById("preimg" + id);
	var togelm = document.getElementById("precollapse" + id);

	if (preelm.style.display != 'none') 
	{
		if (document.all) togelm.innerText = " Expand code snippet";
		else 
		{
			document.getElementById("premain" + id).className = "precollapse";
			togelm.firstChild.nodeValue = " Expand code snippet";
		}
		preelm.style.display = 'none';
		imgelm.setAttribute("src", PreOpen.src);
	}
	else 
	{
		if (document.all) togelm.innerText = " Collapse code snippet";
		else 
		{	
			document.getElementById("premain" + id).className = "SmallText";
			togelm.firstChild.nodeValue = " Collapse code snippet";
		}
		preelm.style.display = 'block';
		imgelm.setAttribute("src", PreClose.src);
	}
}

function CopyCode(name) {
	if (!document.all && !window.netscape) return false;
	
	var id = this.getAttribute("preid");
	if (id < 0) return false;
	
	var elm = document.getElementById("pre" + id.toString());
	if (!elm) return false;
	
	var inputText;
	if(document.all) inputText = elm.innerText;
	else inputText = elm.textContent;
		
	if (window.clipboardData) window.clipboardData.setData("Text", inputText);
	else if (window.netscape) {
		
		var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
		if (!clip) return;
		
		var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
		if (!trans) return;
		trans.addDataFlavor('text/unicode');

		var str = new Object();
		var len = new Object();
		var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
		str.data = inputText;

		trans.setTransferData("text/unicode", str, inputText.length * 2);

		var clipid = Components.interfaces.nsIClipboard;
		if (!clip) return false;

		clip.setData(trans, null, clipid.kGlobalClipboard);
	}

	return false;
}

function InitTogglePre() {
	var canCopy = document.all || window.netscape;

	var articleText = document.getElementById("contentdiv");
	if (!articleText) return;
	var pres = articleText.getElementsByTagName("pre");

	if (window.netscape) {
		try { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); }
		catch (e) {canCopy = false; }
	}
	
	for (var i=0; i<pres.length; i++)
	{	
		var parent = pres[i].parentNode;			
			
		/*var wrap = document.createElement("div");
		wrap.className = "no-vmads";
		parent.insertBefore(wrap, pres[i]);
		var node = parent.removeChild(pres[i]);
		wrap.appendChild(node);	*/
		/*
		if (pres[i].offsetHeight == 0)
		{	if (pres[i].innerText.length < MinPreChars) continue; }
		else if (pres[i].offsetHeight < MinPreHeight)
			continue;
		*/
		
		var main = document.createElement("div");
		main.style.width="100%";
		main.setAttribute("id", "premain" + i.toString());

		var elm = document.createElement("img");
		elm.setAttribute("id", "preimg" + i.toString());
		elm.setAttribute("src", PreClose.src);
		if (document.all) elm.style.cursor = "pointer";
		elm.setAttribute("height", 9);
		elm.setAttribute("width", 9);
		elm.setAttribute("preid", i);
		elm.onclick = togglePre;

		main.appendChild(elm);	
	
		elm = document.createElement("span");
		elm.setAttribute("id", "precollapse" + i.toString());

		if (document.all)
		{
			main.className = "precollapse";
			elm.innerText = " Collapse";
			elm.style.cursor = "pointer";
		}
		else
		{
			main.className = "SmallText";
			main.style.cursor = "pointer";
			elm.textContent = " Collapse";
		}
		
		elm.style.marginBottom = 0;
		elm.onclick = togglePre;
		elm.setAttribute("preid", i);
	
		main.appendChild(elm);

		if (canCopy) {
			elm = document.createElement("img");
			elm.setAttribute("src", PreCopy.src);
			elm.setAttribute("height", 16);
			elm.setAttribute("width", 16)
			elm.style.marginLeft = "35px";
			main.appendChild(elm);

			elm = document.createElement("a");
			main.className = "SmallText";

			if (document.all) elm.innerText = " Copy Code";
			else elm.textContent = " Copy Code";

			elm.href = '#';
			elm.setAttribute("preid", i);
			elm.onclick = CopyCode;
			main.appendChild(elm);
		}
		
		//wrap.setAttribute("id", "pre" + i.toString());
		//wrap.style.marginTop = 0;
		pres[i].setAttribute("id", "pre" + i.toString());
		pres[i].style.marginTop = 0;
		
		var parent = pres[i].parentNode;
		parent.insertBefore(main, pres[i]);	
	}
}

InitTogglePre();

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
Italy Italy
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions