//-------------------------------------------- // 要掛在回傳物件上的 method 程式碼 //-------------------------------------------- function JSON_Dataset_FieldValue_Method(index, fieldName) { var i = this.Cols[fieldName]; if (typeof i != "undefined") { if (typeof this.Rows[index] != "undefined") return this.Rows[index][i]; else return null; } } //-------------------------------------------- // 取得 XMLHTTP 物件參考 //-------------------------------------------- function initRequest() { var A = null; try { A = new ActiveXObject("Msxml2.XMLHTTP") } catch (e) { try { A = new ActiveXObject("Microsoft.XMLHTTP") } catch (oc) { A = null } } if (!A && typeof XMLHttpRequest != "undefined") { A = new XMLHttpRequest() } if (!A && window.createRequest) { try { A = window.createRequest(); } catch (e) { A = null; } } return A } //-------------------------------------------- // 取得網頁上元件的 X 座標 //-------------------------------------------- function offsetLeft(obj) { x = obj.offsetLeft; for (objParent = obj.offsetParent; objParent; objParent = objParent.offsetParent) x += objParent.offsetLeft; return x; } //-------------------------------------------- // 取得網頁上元件的 Y 座標 //-------------------------------------------- function offsetTop(obj) { y = obj.offsetTop; for (objParent = obj.offsetParent; objParent; objParent = objParent.offsetParent) y += objParent.offsetTop; return y; } //-------------------------------------------- // 改顏色 //-------------------------------------------- function changeColor(obj, bgColor, txtColor) { obj.style.backgroundColor = bgColor; obj.style.color = txtColor; } //-------------------------------------------- // 顯示下拉清單 //-------------------------------------------- function ShowPickup1() { XX_SELECT_DIV.style.display = "block"; var totalHeight = document.getElementById("contentDiv").offsetHeight + document.getElementById("contentDiv").offsetTop; if (XX_SELECT_DIV.offsetTop + XX_SELECT_DIV.offsetHeight > totalHeight) { XX_SELECT_DIV.style.top = (totalHeight - XX_SELECT_DIV.offsetHeight) + "px"; // XX_SELECT_DIV.offsetTop = totalHeight - XX_SELECT_DIV.offsetHeight; } //if (XX_SELECT.offsetHeight > 200) // XX_SELECT_PANEL.style.height = "200px"; //XX_SELECT_MASK.style.left = XX_SELECT_DIV.style.left; //XX_SELECT_MASK.style.top = XX_SELECT_DIV.style.top; //XX_SELECT_MASK.style.width = XX_SELECT_DIV.offsetWidth; //XX_SELECT_MASK.style.height = XX_SELECT_DIV.offsetHeight; } //-------------------------------------------- // XMLHTTP 的 onreadystatechange 事件處理程式 //-------------------------------------------- function ShowPickup() { if (XmlHttp.readyState == 4 || XmlHttp.readyState == 'complete') { XX_SELECT_DIV = document.getElementById('XX_SELECT_DIV'); XX_SELECT_DIV.innerHTML = xx_select_html; XX_SELECT_PANEL = document.getElementById('XX_SELECT_PANEL'); XX_SELECT_TITLE = document.getElementById('XX_SELECT_TITLE'); //XX_SELECT_MASK = document.getElementById('XX_SELECT_MASK'); XX_SELECT = document.getElementById('XX_SELECT'); XX_PAGE_BUTTON = document.getElementById('XX_PAGE_BUTTON'); XX_SELECT_DIV.style.left = offsetLeft(objValue) + "px"; XX_SELECT_DIV.style.top = offsetTop(objValue) + objValue.offsetHeight + "px"; // XX_SELECT_DIV.offsetTop = offsetTop(objValue) + objValue.offsetHeight; RespText = XmlHttp.responseText; // if no result, display "not found" message if (RespText == "") { XX_SELECT_DIV.innerHTML = not_found_html1 + msgNotFound + not_found_html2; ShowPickup1(); XX_SELECT_DIV.focus(); return; } // evaluate return data to object XX_TEXT = eval("(" + RespText + ")"); // if (notShowOnlyOneRecord && (XX_TEXT.ListData.Data.Rows.length == 1)) { Update(0); return; } // generate table for display result // draw title newRow = XX_SELECT_TITLE.insertRow(-1); newRow.bgColor = XX_TEXT.ListData.TitleBackgroundColor; for (i in XX_TEXT.ListData.ListTitles) { newCell = newRow.insertCell(-1); if ((typeof XX_TEXT.ListData.ListWidths[i] != "undefined") && (XX_TEXT.ListData.ListWidths[i] != "")) newCell.width = XX_TEXT.ListData.ListWidths[i] + "px"; else newCell.width = "100px"; // newCell.style = "padding:3px"; newCell.innerHTML = "
" + XX_TEXT.ListData.ListTitles[i] + "
"; } // draw content var n = 0; for (i = XX_Init_RecNo; i < XX_TEXT.ListData.Data.Rows.length; i++) { n++; newRow = XX_SELECT.insertRow(-1); if ((i * 1) % 2 == 1) newRow.bgColor = XX_TEXT.ListData.DataAltBackgroundColor; else newRow.bgColor = XX_TEXT.ListData.DataBackgroundColor; newRow.onclick = "Update(" + i + ")"; newRow.onmouseover = "changeColor(this, "#ff9e28", "#FFFFFF")"; newRow.onmouseout = "changeColor(this, "" + newRow.bgColor + "", "" + XX_TEXT.ListData.DataTextColor + "")"; for (j in XX_TEXT.ListData.ListFields) { newCell = newRow.insertCell(-1); if ((typeof XX_TEXT.ListData.ListWidths[j] != "undefined") && (XX_TEXT.ListData.ListWidths[j] != "")) newCell.width = XX_TEXT.ListData.ListWidths[j] + "px"; else newCell.width = "100px"; // newCell.style = "padding:3px"; newCell.innerHTML = "
" + XX_TEXT.ListData.Data.FieldValue(i, XX_TEXT.ListData.ListFields[j]) + "
"; } // when record count is great then max_record setting, draw page-changing button if ((XX_Max_Records > 0 && n >= XX_Max_Records) || i == XX_TEXT.ListData.Data.Rows.length - 1) { XX_Next_RecNo = i + 1; XX_Prev_RecNo = XX_Init_RecNo - XX_Max_Records; // newRow = XX_SELECT.insertRow(-1); // newCell = newRow.insertCell(-1); // newCell.colSpan = 99; var s = "= 0 ? "" : " disabled ") + " onclick=\"SendPickupRequestCont(" + """ + XX_Url + ""," + """ + XX_Name + ""," + """ + XX_Value_Id + ""," + XX_Text_Id + "," + """ + XX_Add_Where + ""," + (notShowOnlyOneRecord ? "true," : "false,") + XX_Max_Records + "," + XX_Prev_RecNo + ");\"/>" + ""; // newCell.innerHTML = s; XX_PAGE_BUTTON.innerHTML = s; break; } } ShowPickup1(); XX_SELECT_DIV.focus(); } } //-------------------------------------------- // 使用 XMLHTTP 送出請求 //-------------------------------------------- function SendPickupRequestCont(url, name, AvalueId, AtextId, additionalWhere, notShowOnlyOne, maxRecords, initRecNo) { valueId = AvalueId; textId = AtextId; XX_Url = url; XX_Name = name; XX_Value_Id = AvalueId; XX_Add_Where = additionalWhere; XX_Max_Records = maxRecords; XX_Init_RecNo = initRecNo; notShowOnlyOneRecord = notShowOnlyOne; // get value-input object objValue = document.getElementById(valueId); // get output object(s) XX_Text_Id = ""; if (typeof textId[0] != "undefined") { objOutput = new Array(textId.length); XX_Text_Id += "["; for (i = 0; i < textId.length; i++) { objOutput[i] = document.getElementById(textId[i]); XX_Text_Id += """ + textId[i] + """; if (i < textId.length - 1) XX_Text_Id += "," } XX_Text_Id += "]"; } else { objOutput = document.getElementById(textId); XX_Text_Id = textId; } // get a HttpRequest object and sumbit request XmlHttp = initRequest(); XmlHttp.open("GET", url + "?NAME=" + name + "&LANGID=" + UserLangId + "&WHERE_KEY=" + escape(objValue.value) + "&ADD_WHERE=" + escape(additionalWhere), true); XmlHttp.onreadystatechange = ShowPickup; XmlHttp.send(""); } function SendPickupRequest(url, name, AvalueId, AtextId, additionalWhere, notShowOnlyOne, maxRecords) { SendPickupRequestCont(url, name, AvalueId, AtextId, additionalWhere, notShowOnlyOne, maxRecords, 0); } //-------------------------------------------- // 下拉清單的鍵盤事件處理程式 //-------------------------------------------- function SelectKeydown(e) { if (XX_SELECT.selectedIndex < 0) return; var keynum = 0; if (window.event) { keynum = event.keyCode; } else if (e.which) { keynum = e.which; } switch (keynum) { // ESC key = close case 27: { HidePickupList(); return false; } } return true; } //-------------------------------------------- // 下拉清單的滑鼠雙擊處理程式 //-------------------------------------------- function SelectDblClicked() { if (XX_SELECT.selectedIndex < 0) return; Update(); } //-------------------------------------------- // 更新頁面上的 HTML 元件中的值 //-------------------------------------------- function Update(value) { if (typeof objOutput[0] != "undefined") { for (i = 0; i < objOutput.length; i++) { if (typeof objOutput[i] != "undefined" && typeof XX_TEXT.ListData.OutputFields[i] != "undefined" && typeof XX_TEXT.ListData.Data.FieldValue(value, XX_TEXT.ListData.OutputFields[i]) != "undefined") { if (objOutput[i] != null) { if (objOutput[i].tagName == "INPUT") objOutput[i].value = XX_TEXT.ListData.Data.FieldValue(value, XX_TEXT.ListData.OutputFields[i]); else objOutput[i].innerHTML = XX_TEXT.ListData.Data.FieldValue(value, XX_TEXT.ListData.OutputFields[i]); } } } } else { if (typeof objOutput != "undefined" && typeof XX_TEXT.ListData.OutputFields[0] != "undefined" && typeof XX_TEXT.ListData.Data.FieldValue(value, XX_TEXT.ListData.OutputFields[0]) != "undefined") { if (objOutput != null) { if (objOutput.tagName == "INPUT") objOutput.value = XX_TEXT.ListData.Data.FieldValue(value, XX_TEXT.ListData.OutputFields[i]); else objOutput.innerHTML = XX_TEXT.ListData.Data.FieldValue(value, XX_TEXT.ListData.OutputFields[i]); } } } HidePickupList(); } // for debug function Update1(obj) { alert(obj); HidePickupList(); } //-------------------------------------------- // 隱藏下拉清單, 並清除其中的資料 //-------------------------------------------- function HidePickupList() { XX_SELECT_DIV.style.display = "none"; XX_SELECT_DIV.innerHTML = xx_select_html; //XX_SELECT_MASK.style.left = "0"; //XX_SELECT_MASK.style.top = "0"; //XX_SELECT_MASK.style.width = "0"; //XX_SELECT_MASK.style.height = "0"; objValue.focus(); } //-------------------------------------------- // 變數與常數宣告 //-------------------------------------------- var XX_SELECT = null; var XX_SELECT_DIV = null; var XX_SELECT_PANEL = null; var XX_SELECT_TITLE = null; //var XX_SELECT_MASK = null; var XX_TEXT = null; var objValue = null; var objOutput = null; var valueId = null; var textId = null; var notShowOnlyOneRecord = false; var XX_SELECT_SelectedIndex = -1; var XX_Url = ""; var XX_Name = ""; var XX_Value_Id = ""; var XX_Text_Id = ""; var XX_Add_Where = ""; var XX_Max_Records = 100; var XX_Next_RecNo = 0; var XX_Prev_RecNo = 0; var XX_Init_RecNo = 0; var not_found_html1 = "
" + "" + "
"; var not_found_html2 = "
" + "
"; var xx_select_html = "" + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + "
" + " " + " " + "
" + " " + "
" + "
" + "
" + " " + "
" + "
" + "
"; var outer_div_html = "
"; //var outer_iframe_html = ""; //var outer_iframe_html = "