JS框選樹只選擇最後一級

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="SelectProviderType.aspx.vb" Inherits="CgZtb.SelectProviderType" %>
<%@ Register TagPrefix="myLoader" Namespace="CustomControl.Control" Assembly="CustomControl" %>
<%@ Register TagPrefix="mwc" Namespace="MySoft.WebControls" Assembly="MySoft.WebControls" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head runat="server">
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"/>
    <title>選擇供應商類別</title>
    <myLoader:Loader runat="server">
            <LinkResources>
                <myLoader:Link Href="/_common/styles/dialogs.css" Rel="stylesheet" Type="text/css"  />
                <myLoader:Link Href="/_nav/taskbox.css" Rel="stylesheet" Type="text/css"  />
                <myLoader:Link Href="/_controls/tree/tree.css" Rel="stylesheet" Type="text/css"  />
                <myLoader:Link Href="/_nav/tabs.css" Rel="stylesheet" Type="text/css"  />
            </LinkResources>
            <ScriptResources>
                <myLoader:Script Type="text/javascript" Src="/_forms/FormBase.js"  />
            </ScriptResources>
    </myLoader:Loader>
    <style>
    .autocut   
    {
        overflow:hidden;  
        white-space:nowrap;  
        text-overflow:ellipsis;  
    }  
    </style>
    <script type="text/javascript">
        // 確定返回
        // 返回類別名稱和代碼
        function okClick() {
            if (getSelectedValue()) {
                parent.window.close();
            }
        }
        window.onload = function() {
            //根據默認值選中供應商類
            var oProviderTypeCodeList = document.getElementById("__ProviderTypeCodeList");
            if (oProviderTypeCodeList) {
                var arrProviderTypeCodeList = oProviderTypeCodeList.value.split(";");
                var allRows = Table1.rows;
                var irowCount = Table1.rows.length;
                
                //獲取對應的所有行裏面記錄值組成一個數組或者對象
                var arr = []
                for (var k = 1; k < irowCount; k++) {
                {
                      arr.push(allRows[k].value);                    
                }

                var oChk;
                for (var i = 1; i < irowCount; i++) 
                {
                   
                   //獲取所有的行裏面的所有值如果它在對應的所有行記錄裏面遍歷一次如果是唯一的那麼它就是唯一的就保留權限枚舉法
                   var checkOP=0;
                   for(var m = 0; m < arr.length; m++)
                   {
                        var ckOF=arr[m].indexOf(allRows[i].value);
                        if(ckOF>-1)
                        {
                            checkOP++;
                        }
                   }
                   if(checkOP>1)
                   {
                       oChks = allRows[i].cells[0].children[2].children[0];
                       oChks.disabled = true;                   
                   }
                   else
                   {
                         //找到選中的節點行
                        for (var j = 0; j < arrProviderTypeCodeList.length; j++) 
                        {
                            if (arrProviderTypeCodeList[j].toLowerCase() == allRows[i].ProviderTypeCode.toLowerCase()) 
                            {
                                oChk = allRows[i].cells[0].children[2].children[0];
                                oChk.checked = true;
                                selectNode(oChk);
                                arrProviderTypeCodeList.splice(j, 1);
                                break;
                            }
                        } 
                    }
                }
             }
           }
        }
        //需求《中庚費用系統二次開發方案-提交版》因爲上面版本與這個版本差距很大特註釋方法 待以後對比參照
        //window.onload = function() {
        //    //根據默認值選中供應商類
        //    var oProviderTypeCodeList = document.getElementById("__ProviderTypeCodeList");
        //    if (oProviderTypeCodeList) {
        //        var arrProviderTypeCodeList = oProviderTypeCodeList.value.split(";");
        //        var allRows = Table1.rows;
        //        var irowCount = Table1.rows.length;
        //        var oChk;
        //        for (var i = 1; i < irowCount; i++) {
        //            //找到選中的節點行
        //            for (var j = 0; j < arrProviderTypeCodeList.length; j++) {
        //                if (arrProviderTypeCodeList[j].toLowerCase() == allRows[i].ProviderTypeCode.toLowerCase()) {
        //                    oChk = allRows[i].cells[0].children[2].children[0];
        //                    oChk.checked = true;
        //                    selectNode(oChk);
        //                    arrProviderTypeCodeList.splice(j, 1);
        //                    break;
        //
        //                }
        //            }
        //        }
        //    }
        //}
        
        
        // 獲取複選框的值
        function getSelectedValue() {
            var iCount = 0;
            var arrRtn = new Array(2);
            arrRtn[0] = new Array();
            arrRtn[1] = new Array();
            var allRows = Table1.rows;
            for (var i = 1; i < allRows.length; i++)        // 不考慮“所有類別”行
            {
                if (allRows[i].cells[0].children[2].children[0].checked == true) {
                //和新採招一致,每個節點可選
//                    //判斷當前節點的是否還有子級選中,如果有則不添加(直接判斷下一行是否選中)
//                    if (allRows[i + 1] && allRows[i + 1].cells[0].children[2].children[0].checked == true) {
//                        if ((allRows[i + 1].code + ".").indexOf((allRows[i].code + ".")) >= 0) {
//                            continue;
//                        }
//                    }
                    arrRtn[0][iCount] = allRows[i].value;                 // 類別名稱
                    arrRtn[1][iCount] = allRows[i].ProviderTypeCode;         // 類別代碼
                    iCount++;
                }
            }
            if (iCount == 0) {
                alert("請選擇具體的供應商類別!");
                return false;
            }
            else {
                parent.window.returnValue = arrRtn;
                return true;
            }
        }
        function selectNode(o) {
            event.cancelBubble = true;
            var irowCount, sCode;
            var sSelectCode = o.parentElement.parentElement.parentElement.code + ".";
            var iStartIndex = o.parentElement.parentElement.parentElement.rowIndex;
            var allRows = Table1.rows;
//            //勾中當前節點,同時勾中父級節點
//            //勾去當前節點,同時勾去子級節點
//            if (o.checked) {
//                for (var i = iStartIndex; i > 0; i--) {
//                    sCode = allRows[i].code + ".";
//                    //選中所有上級
//                    if (sSelectCode.indexOf(sCode) >= 0) {
//                        allRows[i].cells[0].children[2].children[0].checked = true;
//                    }
//                    if (allRows[i].level == "2") {
//                        break;
//                    }
//                }
//            } else {
//                irowCount = allRows.length;
//                for (var i = iStartIndex + 1; i < irowCount; i++) {
//                    sCode = allRows[i].code + ".";
//                    //取消選中所有下級
//                    if (sCode.indexOf(sSelectCode) >= 0) {
//                        allRows[i].cells[0].children[2].children[0].checked = false;
//                    }
//                    if (allRows[i].level == "2") {
//                        break;
//                    }
//                }
//            }
        }
        // 全選、取消全選
        function CheckAll() {
            for (var i = 1; i < Table1.rows.length; i++) {
                if (document.getElementsByName("IsChkAll")[1].checked) {
                    Table1.rows[i].cells[0].children[2].children[0].checked = true;
                }
                else
                    Table1.rows[i].cells[0].children[2].children[0].checked = false;
            }
        }
    </script>
       </head>
<body MS_POSITIONING="GridLayout">
    <form id="mapForm" method="post" runat="server">
        <table width="100%" cellspacing="0" cellpadding="0" height="100%">
            <tr>
                <td class="main" colspan="2">
                    <table width="100%" cellspacing="0" cellpadding="0" height="100%">
                        <TBODY>
                            <tr height="26" >
                                <td>
                                    <table style="TABLE-LAYOUT:fixed">
                                        <tr height="26">
                                            <td width="150"><b style="COLOR:#666666">供應商類別</b>
                                            </td>
                                            <td>
                                                <asp:RadioButtonList id="IsChkAll" runat="server" RepeatDirection="Horizontal" BorderStyle="None" onclick="CheckAll();" style="display:none">
                                                    <asp:ListItem Value="1" >全部選擇</asp:ListItem>
                                                    <asp:ListItem Value="0">全部取消</asp:ListItem>
                                                </asp:RadioButtonList>
                                            </td>
                                        </tr>
                                    </table>
                                </td>
                            </tr>
                            <tr>
                                <td class="wizBox1">
                                    <DIV style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; OVERFLOW: auto; WIDTH: 100%; PADDING-TOP: 5px; HEIGHT: 100%">
                                        <mwc:repeater id="repLD" runat="server" SortSignDESC='<img src="/_imgs/ico_arrow_d.gif">' SortSignASC='<img src="/_imgs/ico_arrow_u.gif">'
                                            PKField="BldCode" LinkAlign="right" LinkCssClass="a1" FooterCssClass="footer" EnablePager="false">
                                            <HeaderTemplate>
                                                <TABLE id="Table1" cellspacing="0" cellpadding="0" width="100%" class="singleSelectTree"
                                                    ismultiselect="1">
                                            </HeaderTemplate>
                                            <ItemTemplate>
                                                <tr height='20' code='<%# DataBinder.Eval(Container, "DataItem.code") %>'
                                                                value='<%# DataBinder.Eval(Container, "DataItem.ProviderTypeName") %>'
                                                                text='<%# DataBinder.Eval(Container, "DataItem.name") %>'
                                                                type='<%# DataBinder.Eval(Container, "DataItem.type") %>'
                                                                level='<%# DataBinder.Eval(Container, "DataItem.Level") %>'
                                                                ProviderTypeCode='<%# DataBinder.Eval(Container, "DataItem.ProviderTypeCode") %>'
                                                                allowselect='0'
                                                                is_hide="false" onclick="Table1.clickNode(this)"
                                                                onmouseover='this.bgColor="#F1F1F1"' onmouseout='this.bgColor="#ffffff"'>
                                                    <td class="autocut" title='<%# DataBinder.Eval(Container, "DataItem.name") %>'>
                                                        <span></span><label style="CURSOR: hand;"></label>
                                                        <asp:CheckBox id="chkSelect" runat="server" onclick="selectNode(this)" style="width:20px;" Text="" Checked='<%# iif(DataBinder.Eval(Container, "DataItem.checked")="1","true","false") %>' Visible='<%# iif(DataBinder.Eval(Container, "DataItem.ProviderTypeCode")="ALL","false","true") %>'>
                                                            </asp:CheckBox>
                                                        <%# DataBinder.Eval(Container, "DataItem.name") %>
                                                        <input id="txtIfEnd" style="display:none;" runat="server" value='<%# DataBinder.Eval(Container, "DataItem.IfEnd") %>' NAME="txtIfEnd">
                                                    </td>
                                                </tr>
                                            </ItemTemplate>
                                            <FooterTemplate>
                    </table>
                    </FooterTemplate> </mwc:repeater></DIV>
                </td>
            </tr>
        </table>
        </TD></TR>
        <tr height="40">
            <td class="buttons" style="TEXT-ALIGN:left">
                <asp:Literal id="Literal1" runat="server"></asp:Literal>
            </td>
            <td class="buttons">
                <button style="WIDTH:70px" onclick="okClick()" id="btnOk" type="button">確 定</button>&nbsp;&nbsp;
                <button style="WIDTH:70px" onclick="parent.window.close();" type="button">取 消</button>
            </td>
        </tr>
        </TBODY></TABLE>
    </form>
</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章