// 采用控件替换的办法,解决select控件不能输入的问题。
// IE 5.5才支持onfocusout事件!
// 使用class selecteditctrl 控制替换select的input text控件的版式
// 如果该select为可编辑的,并且值不在选项中,则使用title="xxxxx"来赋值
///判断浏览器版本
window["MzBrowser"]={};(function()
{
if(MzBrowser.platform) return;
var ua = window.navigator.userAgent;
MzBrowser.platform = window.navigator.platform;
MzBrowser.firefox = ua.indexOf("Firefox")>0;
MzBrowser.opera = typeof(window.opera)=="object";
MzBrowser.ie = !MzBrowser.opera && ua.indexOf("MSIE")>0;
MzBrowser.mozilla = window.navigator.product == "Gecko";
MzBrowser.netscape= window.navigator.vendor=="Netscape";
MzBrowser.safari = ua.indexOf("Safari")>-1;
if(MzBrowser.firefox) var re = /Firefox(/s|//)(/d+(/./d+)?)/;
else if(MzBrowser.ie) var re = /MSIE( )(/d+(/./d+)?)/;
else if(MzBrowser.opera) var re = /Opera(/s|//)(/d+(/./d+)?)/;
else if(MzBrowser.netscape) var re = /Netscape(/s|//)(/d+(/./d+)?)/;
else if(MzBrowser.safari) var re = /Version(//)(/d+(/./d+)?)/;
else if(MzBrowser.mozilla) var re = /rv(/:)(/d+(/./d+)?)/;
if("undefined"!=typeof(re)&&re.test(ua))
MzBrowser.version = parseFloat(RegExp.$2);
})();
if (!SelDropdownPicturePath) {
var SelDropdownPicturePath = "../../App_Themes/Default/Images/";
}
var oPopup = window.createPopup();
var WBSelectArray = new Array();
function WBSelect(innerhtml,xl,yl,edit,select)
{
this.innerhtml = innerhtml;
this.xl = xl;
this.yl = yl;
this.edit = edit;
this.select = select;
}
//pop dropdown
function DropDown(index) {
with (WBSelectArray[index]) {
oPopup.document.body.innerHTML = innerhtml;
oPopup.show(0, edit.offsetHeight, xl, yl,edit);
// 截断过长的,以hint形式显示
var obj = oPopup.document.body.children(0).children(0);
while (obj) {
if (obj.offsetWidth > xl) {
obj.style.textOverflow = "ellipsis";
obj.style.overflow = "hidden";
obj.title = obj.innerText;
obj.style.pixelWidth = xl - 16;
}
obj = obj.nextSibling;
}
}
}
// 选中下拉框中的选项
function DoSelect(i,ii)
{
oPopup.hide();
with (WBSelectArray[ii]) {
edit.value = select.options(i).text;
edit.select();
edit.focus();
if (select.selectedIndex != i) {
select.selectedIndex = i;
select.fireEvent("onchange");
}
}
}
// submit时取值
function DoSubmit()
{
var frm = window.event.srcElement;
var obj,sel,edit,_edit;
var oOption;
for (var j=0;j<frm.elements.length;j++) {
obj = frm.elements(j);
if ((obj.tagName=="SELECT")&&(obj.className=="selectedit"))
{
edit = frm.elements("E_"+obj.id);
_edit=frm.elements(obj.id+"_E");
if (obj.selectedIndex>=0) {
oOption = obj.options(obj.selectedIndex);
} else { // 无选项
var oOption = document.createElement("OPTION");
oOption.selected = true;
obj.options.add(oOption);
}
if (edit.value!=oOption.text)
{
if(_edit!=null)
_edit.value=edit.value;
else
_edit.value=oOption.value;
}
else
{
if(_edit!=null)
_edit.value=oOption.value;
}
}
}
}
// replace origion "Select"
function ReplaceSelect(select) {
select.style.display="none";
var parent=select.parentElement;
var container=document.createElement("DIV");
with (container.style)
{
pixelWidth = select.style.pixelWidth;
if (pixelWidth==0) pixelWidth=select.clientWidth;
//修改div显示属性,以便让ReportViewer中的控件能够正确显示位置
// pixelWidth=pixelWidth;
pixelHeight = select.style.pixelHeight+20;//zhaofc 10/31/07
if (pixelHeight==0) pixelHeight=select.clientHeight;
//pixelHeight=pixelHeight-4;
verticalAlign ="middle";
container.align="left";
// pixelLeft = select.style.pixelLeft;
// pixelTop = select.style.pixelTop;
pixelTop = 2;
position = select.style.position;
}
parent.insertBefore(container,select);
//创建edit控件
var edit=document.createElement("input");
// 修改容器宽度属性,以便让ReportViewer中的控件能够正确显示位置
edit.style.pixelWidth = container.style.pixelWidth-6;
edit.style.position="absolute";
edit.className = "selecteditctrl";
edit.tabIndex=select.tabIndex;
if (select.selectedIndex>=0)
edit.value = select.options(select.selectedIndex).text;
if (select.className!="selectedit")
edit.readOnly = true;
else if (select.title!="") edit.value = select.title;
edit.disabled=select.disabled;
edit.id = "E_"+select.id;
container.appendChild(edit);
//下拉框创建
var ColorOver="#3CA7D5";//zhaofc 10/31/07
var ColorOut="#E1F3FD";//zhaofc 10/31/07
var len=select.options.length;
var ii=WBSelectArray.length;
var pixelheight = 16;
// 下拉框高度
var overflowy="hidden";
if (len!=0) {
if (len<=6) pixelheight = len * 20 + 2;
else {
pixelheight = 6 * 20 + 2;
overflowy="";
}
}
// 下拉框宽度
var xl = select.getAttribute('DropDownWidth');
if (xl == null)
xl = container.style.pixelWidth-1;
else
xl = Math.max(parseInt(xl),container.style.pixelWidth);
var html='<DIV ' +
'style="position:absolute;font-family:Arial,宋体; font-size:9pt;'+
'overflow:scroll; overflow-x:hidden; scrollbar-base-color:#3CA7D5; '+
'width:' + xl + ';height:' + pixelheight + ';overflow-y:' + overflowy + ';' +
'color:#212121; border:1px solid #9FC5F6; cursor:hand; '+
'SCROLLBAR-HIGHLIGHT-COLOR:#0f7d84; SCROLLBAR-ARROW-COLOR: white;scrollbar-darkshadow-color : #0f7d84;">';//zhaofc 10/31/07
// 创建下拉框的内容
for (var i=0;i<len;i++) {
html += '<DIV οnmοuseοver="this.style.background='
+ "'" + ColorOver + "'" + '" '
+ 'οnmοuseοut="this.style.background='
+ "'" + ColorOut + "'" + '" '
+ 'NOWRAP STYLE="height:20px; background:' + ColorOut
+ '; border-bottom:1px solid #9FC5F6; padding-top:2px; padding-left:2px" '//zhaofc 10/31/07
+ 'οnclick="javascript:parent.DoSelect(' + i + ',' + ii + ');">'
+ select.options(i).text + '</DIV>';
}
html += '</DIV>';
WBSelectArray[ii] = new WBSelect(html,xl,pixelheight,edit,select);
// 创建下拉按钮
imgLeft=edit.style.pixelWidth-13;
var down=document.createElement(
'<IMG SRC="'+SelDropdownPicturePath+'icon_dropdown.gif" border=0 ' +
'style="z-Index:1;top:1px;position:relative;left:'+imgLeft+'px;margin-bottom:1px;vertical-align:top;cursor:hand" οnclick="DropDown(' + ii + ')">');
down.disabled=select.disabled;
down.id = "D_"+select.id;
container.appendChild(down);
}
function onloadinit()
{
var obj,frm,haveSelect,_edit;
for (var i=0;i<document.forms.length;i++)
{
frm = document.forms(i);
haveSelect = false;
for (var j=0;j<frm.elements.length;j++)
{
obj = frm.elements(j);
if ((obj.tagName=="SELECT")&&(obj.size==0))
{
ReplaceSelect(obj);
j++; // 插入了一个Text
haveSelect = true;
}
}
if (haveSelect)
frm.attachEvent("onsubmit",DoSubmit);
}
}
window.attachEvent("onload",onloadinit);
function SetGridCheckBox(value)
{
fm=document.forms[0]
for(i=0;i<fm.length;i++)
{
e=fm.elements[i];
if(e.id.indexOf("ckSelRecord")>0)
{
if(!e.disabled)
e.checked=value;
}
}
}
//设置所有表格复选框的选中状态
function SetGridCheckBox(value)
{
fm=document.forms[0]
for(i=0;i<fm.length;i++)
{
e=fm.elements[i];
if(e.id.indexOf("ckSelRecord")>0)
{
if(!e.disabled)
e.checked=value;
}
}
}
//清除“全选”复选框
function ClearSelAllCheckBox()
{
fm=document.forms[0]
for(i=0;i<fm.length;i++)
{
e=fm.elements[i];
if(e.id.indexOf("ckSelAll")>0)
e.checked=false;
}
}
//检查是否有记录被选中
function checkRecSelState()
{
fm=document.forms[0]
var result=0;
for(i=0;i<fm.length;i++)
{
e=fm.elements[i];
if(e.id.indexOf("ckSelRecord")>0&&e.checked)
{
result=1;
break;
}
}
return result==1;
}
//删除按钮客户端事件方法
function delEvent(delHint)
{
if(checkRecSelState())
{
// modify 2006-11-14 可以传入自定义删除提示
//alert(delHint);
if(delHint)
return confirm(delHint);
else
return confirm("您确定要删除选中的记录吗?");
}
else
{
alert("请选择需要删除的记录!");
return false;
}
}
//全部删除按钮客户端事件方法
function delAllEvent()
{
return confirm("您确定要删除所有记录吗?");
}