JS框选树只选择最后一级

版权声明:学习之路有很多引荐的地方,希望能帮到大家就可以! https://blog.csdn.net/mingzaiwang/article/details/82994602
<%@ 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>

猜你喜欢

转载自blog.csdn.net/mingzaiwang/article/details/82994602