⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listbox.htc

📁 采用微软力推的ASP.Net(C#)编写而成的烁空网络课堂系统
💻 HTC
字号:
<PUBLIC:COMPONENT>
<PUBLIC:DEFAULTS/>
<PUBLIC:attach		event="ondocumentready" onevent="initElement()" />
<PUBLIC:attach		event="ondetach" onevent="cleanupElement()" />
<PUBLIC:attach		event="onmouseover" onevent="elementOnMouseOver()" />
<PUBLIC:attach		event="onmouseout" onevent="elementOnMouseOut()" />
<PUBLIC:attach		event="onclick" onevent="elementOnClick()" />
<PUBLIC:attach		event="ondblclick" onevent="elementOnDoubleClick()" />
<PUBLIC:attach		event="onselectstart" onevent="elementOnSelect()" />


<PUBLIC:property	name="value" value="" />
<PUBLIC:property	name="text" value="" />
<PUBLIC:property	name="selectedIndex" value=-1 />
<PUBLIC:property	name="sortType" value="Ascending" />

<PUBLIC:method		name="itemCount" />
<PUBLIC:method		name="sort" />
<PUBLIC:method		name="addItem" />
<PUBLIC:method		name="removeItem" />
<PUBLIC:method		name="showItem" />
<PUBLIC:method		name="hideItem" />
<PUBLIC:method		name="getItemIndex" />
<PUBLIC:method		name="getItemText" />
<PUBLIC:method		name="getItemChecked" />
<PUBLIC:method		name="getItemValue" />
<PUBLIC:method		name="getItemHTML" />
<PUBLIC:method		name="getItemTag" />
<PUBLIC:method		name="setSelectedItem" />

<PUBLIC:event		name="onchange" id="onchange" />
<PUBLIC:event		name="ondoubleclick" id="ondoubleclick" />

<script language="jscript">

var imageCell = 0 ;
var captionCell = 1 ;
var valueCell = 2 ;
var tagCell = 3 ;

var optionsElement = null ;

function initElement() {
	optionsElement = element.children[0] ;
	with (optionsElement) {
		for (var i = 0; i < rows.length; i++) {
			with (rows[i].children[imageCell]) {
				if (children.length == 0) {
					var imgElement = document.createElement("IMG") ;
					imgElement.src = element.currentStyle.noImageUrl ;
					insertAdjacentElement("beforeEnd", imgElement) ;
				}
				else {
					children[0].hideFocus = true ;
				}
			}
		}
	}	
}

function cleanupElement() {
	optionsElement = null ;
}

function elementOnMouseOver() {
	var el = getRealItem(window.event.srcElement) ;
	if (el.tagName == "TR") {
		el.className = "2k3ListboxItemOver" ;
	}
	el = null ;
}

function elementOnMouseOut() {
	var el = getRealItem(window.event.srcElement) ;
	if (el.tagName == "TR") {
		if (element.selectedIndex == el.rowIndex) {
			el.className = "2k3ListboxItemSelected" ;
		}
		else {
			el.className = "2k3ListboxItem" ;
		}
	}
	el = null ;
}

function elementOnClick() {
	var el = getRealItemClick(window.event.srcElement)
	if (el.tagName == "TR") {
		if (element.selectedIndex != -1) {
			el.parentElement.children[element.selectedIndex].className = "2k3ListboxItem" ;
		}
		el.className = "2k3ListboxItemSelected" ;
		element.selectedIndex = el.rowIndex ;
		element.text = el.children[captionCell].innerText ;
		element.value = el.children[valueCell].innerText ;
		onchange.fire() ;
	}
	el = null ;
}

function elementOnDoubleClick() {
	with (window.event) {
		var el = getRealItemClick(srcElement) ;
		cancelBubble = true ;
		returnValue = false ;
	}
	if (el.tagName == "TR") {
		ondoubleclick.fire() ;
	}
	el = null ;
	return false ;
}

function elementOnSelect() {
	with (window.event) {
		cancelBubble = true ;
		returnValue = false ;
	}
	return false ;
}

function itemCount() {
	return optionsElement.rows.length ;
}

function sort() {
	var bReverse = (sortType == "Descending") ;
	for (var i = 0; i < optionsElement.rows.length; i++) {
     	var strRowInsert = (optionsElement.rows[i].children[captionCell].innerText).toLowerCase() ;
        for (var s = 0; s <= i; s++) {
			var strRowCurrent = (optionsElement.rows[s].children[captionCell].innerText).toLowerCase() ;
			if (((!bReverse && strRowInsert < strRowCurrent) || (bReverse && strRowInsert > strRowCurrent)) && (i != s)) {
				with (optionsElement.insertRow(optionsElement.rows[s].rowIndex)) {
					className = "2k3ListboxItem" ;
					for (var c = 0; c <= 3; c++) { insertCell(c) }
					with (children[imageCell]) {
						className = "2k3ListboxImage" ;
						innerHTML = optionsElement.rows[i + 1].children[imageCell].innerHTML ;
					}
					with (children[captionCell]) {
						className = "2k3ListboxCaption" ;
						innerHTML = optionsElement.rows[i + 1].children[captionCell].innerHTML ;
					}
					with (children[valueCell]) {
						className = "2k3ListboxValue" ;
						innerText = optionsElement.rows[i + 1].children[valueCell].innerText ;
					}
					with (children[tagCell]) {
						className = "2k3ListboxTag" ;
						innerText = optionsElement.rows[i + 1].children[tagCell].innerText ;
					}
				}
                optionsElement.deleteRow(optionsElement.rows[i + 1].rowIndex) ;
                break ;
            }
        }
	}
	setSelectedItem(getItemIndex(element.text)) ;
}

function addItem(itmType, text, value, itemIndex, exData, tagData) {
	var objNewRow = optionsElement.insertRow(itemIndex) ;
	with (objNewRow) {
		className = "2k3ListboxItem" ;
		for (var c = 0; c <= 3; c++) { insertCell(c) }
		with (children[imageCell]) {
			className = "2k3ListboxImage" ;
			switch ((itmType).toLowerCase()) {
				case "n":
					innerHTML = "<img src='" + element.currentStyle.noImageUrl + "'>" ;
					break ;
				case "i":
					if (exData == "") {
						exData = element.currentStyle.noImageUrl ;
					}
					innerHTML = "<img src='" + exData + "'>" ;
					break ;
				case "c":
					if (exData == "" || (exData).toLowerCase() == "false" || !exData) {
						innerHTML = "<input type='checkbox' hidefocus style='height: 15px; overflow: hidden;'>" ;
					}
					else {
						innerHTML = "<input type='checkbox' hidefocus checked style='height: 15px; overflow: hidden;'>" ;
					}
					break ;
			}
		}
		with (children[captionCell]) {
			className = "2k3ListboxCaption" ;
			innerHTML = text ;
		}
		with (children[valueCell]) {
			className = "2k3ListboxValue" ;
			innerText = value ;
		}
		with (children[tagCell]) {
			className = "2k3ListboxTag" ;
			innerText = tagData ;
		}
	}
	setSelectedItem(getItemIndex(element.text)) ;
}

function removeItem(itemIndex) {
	optionsElement.deleteRow(itemIndex) ;
	if (element.selectedIndex == itemIndex) {
		element.selectedIndex = -1 ;
		element.text = "" ;
		element.value = "" ;
		onchange.fire() ;
	}
}

function showItem(itemIndex) {
	optionsElement.rows[itemIndex].style.display = "" ;
}

function hideItem(itemIndex) {
	optionsElement.rows[itemIndex].style.display = "none" ;
	if (selectedIndex == itemIndex) {
		element.selectedIndex = -1 ;
		element.text = "" ;
		element.value = "" ;
		onchange.fire() ;
	}
}

function getItemIndex(itemText) {
	with (optionsElement) {
		for (var i = 0; i < rows.length; i++) {
			with (rows[i].children[captionCell]) {
				if (innerText == itemText) {
					return rows[i].rowIndex ;
				}
			}
		}
	}
	return -1 ;
}

function getItemText(itemIndex) {
	return optionsElement.rows[itemIndex].children[captionCell].innerText ;
}

function getItemValue(itemIndex) {
	return optionsElement.rows[itemIndex].children[valueCell].innerText ;
}

function getItemHTML(itemIndex) {
	return optionsElement.rows[itemIndex].children[captionCell].innerHTML ;
}

function getItemTag(itemIndex) {
	return optionsElement.rows[itemIndex].children[tagCell].innerText ;
}

function getItemChecked(itemIndex) {
	with (optionsElement.rows[itemIndex].children[imageCell]) {
		if (children[0].tagName != "INPUT") {
			return false ;
		}
		else {
			return children[0].checked ;
		}
	}
}

function setSelectedItem(itemIndex) {
	if (itemIndex == -1) {
		if (element.selectedIndex != -1) {
			if (element.selectedIndex > optionsElement.rows.length - 1) {
				element.selectedIndex = -1 ;
				element.text = "" ;
				element.value = "" ;
				return ;
			}
			optionsElement.rows[element.selectedIndex].className = "2k3ListboxItem" ;
			element.selectedIndex = -1 ;
			element.text = "" ;
			element.value = "" ;
			onchange.fire() ;
		}
	}
	else {
		if (element.selectedIndex > optionsElement.rows.length - 1) {
			element.selectedIndex = -1 ;
			element.text = "" ;
			element.value = "" ;
			return ;
		}
		if (element.selectedIndex != -1) {
			optionsElement.rows[element.selectedIndex].className = "2k3ListboxItem" ;
		}
		with (optionsElement.rows[itemIndex]) {
			className = "2k3ListboxItemSelected" ;
			element.selectedIndex = rowIndex ;
			element.text = children[captionCell].innerText ;
			element.value = children[valueCell].innerText ;
		}
		onchange.fire() ;
	}
}

function getRealItem(el) {
	if (el != null) {
		if (el.tagName == "IMG") { el = el.parentElement ; }
		if (el.tagName == "INPUT") { el = el.parentElement ; }
		if (el.tagName == "LI") { el = el.parentElement ; }
		switch (el.className) {
			case "2k3ListboxImage":
				return el.parentElement ;
				break ;
			case "2k3ListboxCaption":
				return el.parentElement ;
				break ;
			default:
				return el ;
				break ;
		}
	}
	else {
		return el ;
	}
}

function getRealItemClick(el) {
	if (el != null) {
		if (el.tagName == "IMG") { el = el.parentElement ; }
		if (el.tagName == "LI") { el = el.parentElement ; }
		switch (el.className) {
			case "2k3ListboxImage":
				return el.parentElement ;
				break ;
			case "2k3ListboxCaption":
				return el.parentElement ;
				break ;
			default:
				return el ;
				break ;
		}
	}
	else {
		return el ;
	}
}
</script>

</PUBLIC:COMPONENT>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -