Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在客户端的RadTreeView中获取所有已检查项和值?_Javascript_Radcombobox_Radtreeview - Fatal编程技术网

Javascript 如何在客户端的RadTreeView中获取所有已检查项和值?

Javascript 如何在客户端的RadTreeView中获取所有已检查项和值?,javascript,radcombobox,radtreeview,Javascript,Radcombobox,Radtreeview,我的RadTreeView在RadCombobox中。 我需要使用javascipt创建函数,因为我想在关闭RadComboBox后读取所有选中项及其值 如何使用javascript获取所有选中项和值 这是我的源代码: function OnClientDropDownClosed() { //Foreach all checked items and save to array //I want to need for exam

我的RadTreeView在RadCombobox中。 我需要使用javascipt创建函数,因为我想在关闭RadComboBox后读取所有选中项及其值

如何使用javascript获取所有选中项和值

这是我的源代码:

function OnClientDropDownClosed()
        {
            //Foreach all checked items and save to array 
            //I want to need for example: Text: John Black, Value: 1
        }

<telerik:RadComboBox ID="RadComboBox1" OnClientDropDownClosed="OnClientDropDownClosed" runat="server" Width="500px" ShowToggleImage="True"
                ExpandAnimation-Type="None"
                CollapseAnimation-Type="None">
                <ItemTemplate>
                    <div id="div1">
                        <telerik:RadTreeView runat="server" ID="RadTreeView1" CheckBoxes="true" Width="100%"
                            Height="140px" TriStateCheckBoxes="true">
                            <Nodes>
                                <telerik:RadTreeNode runat="server" Text="Company" Value="9" Expanded="true">
                                    <Nodes>
                                        <telerik:RadTreeNode runat="server" Text="Employees A" Value="10" Expanded="true">
                                            <Nodes>
                                                <telerik:RadTreeNode runat="server" Value="1" Text="John Black">
                                                </telerik:RadTreeNode>

                                                <telerik:RadTreeNode runat="server" Value="2" Text="Peter Snopy">
                                                </telerik:RadTreeNode>

                                                <telerik:RadTreeNode runat="server" Value="3" Text="George New">
                                                </telerik:RadTreeNode>

                                                <telerik:RadTreeNode runat="server" Value="4" Text="William Wall">
                                                </telerik:RadTreeNode>
                                            </Nodes>
                                        </telerik:RadTreeNode>

                                        <telerik:RadTreeNode runat="server" Text="Employees B" Value="11" Expanded="true">
                                            <Nodes>
                                                <telerik:RadTreeNode runat="server" Value="5" Text="John Black">
                                                </telerik:RadTreeNode>

                                                <telerik:RadTreeNode runat="server" Value="6" Text="Peter Snopy">
                                                </telerik:RadTreeNode>

                                                <telerik:RadTreeNode runat="server" Value="7" Text="George New">
                                                </telerik:RadTreeNode>

                                                <telerik:RadTreeNode runat="server" Value="8" Text="William Wall">
                                                </telerik:RadTreeNode>
                                            </Nodes>
                                        </telerik:RadTreeNode>
                                    </Nodes>
                                </telerik:RadTreeNode>
                            </Nodes>
                        </telerik:RadTreeView>
                    </div>
                </ItemTemplate>
                <Items>
                    <telerik:RadComboBoxItem Text="" />
                </Items>
            </telerik:RadComboBox>
函数OnClientDropDownClosed()
{
//Foreach所有选中项并保存到数组
//我需要例如:Text:johnblack,Value:1
}

如果我正确理解了您的问题,您希望将选中的节点文本和值添加到JavaScript中的数组中,以下是解决方案:

function OnClientDropDownClosed(sender, eventArgs)
{ 
var arr_of_nodes = new Array();

 var tree=sender.get_items().getItem(0).findControl("RadTreeView1");
 var treenodes=tree.get_nodes(); 
  for (i=0; i<treenodes.get_count(); i++) 
   { 

       if (treenodes.getNode(i).get_checked()) 
       { 
        var _nodeText=treenodes.getNode(i).get_text();
        var _nodeValue=treenodes.getNode(i).get_value();
       arr_of_nodes.push(_nodeText+":"+_nodeValue);

       } 
   } 
 //do something with the array arr
}
函数OnClientDropDownClosed(发送方,事件参数)
{ 
var arr_of_nodes=新数组();
var tree=sender.get_items().getItem(0.findControl(“RadTreeView”);
var treenodes=tree.get_nodes();

对于(i=0;i您可以使用
TreeView.get_nodes()
TreeNode.get_nodes()
,但它们只提供直接节点,而不是它们的完整后代

因此,对于节点级别不同的RadTreeView,我们需要一个递归函数来深入到整个节点层次结构中

此答案改编自wizpert的答案和Telerik的博客:

函数OnClientDropDownClosed(发送方,事件参数)
{
//首先,让我们抓住treeview(发送者是组合框)
var tree=sender.get_items().getItem(0.findControl(“RadTreeView”);
//将treeview节点传递给另一个函数以查找选中的节点
var items=getCheckedNodes(tree.get_nodes());
var text='None selected';//默认文本
如果(items.length>0)
{
var文本=[];
对于(变量i=0;i0)
{
//递归函数调用
childCheckedNodes=getCheckedNodes(node.get_nodes());
如果(childCheckedNodes.length>0)
{
//使用递归调用的结果追加数组
checkedNodes=checkedNodes.concat(childCheckedNodes);
}
}
}
返回checkedNodes;
}

这只是对第一级节点进行迭代。您有任何针对多级树视图的递归函数吗?请参阅我使用针对多级节点的递归函数的答案
function OnClientDropDownClosed(sender, eventArgs) 
{
    // first let's get hold of the treeview (sender is the combobox)
    var tree = sender.get_items().getItem(0).findControl("RadTreeView1");

    // pass the treeview nodes to another function to find the checked nodes
    var items = getCheckedNodes(tree.get_nodes());

    var text = 'None selected'; // default text

    if (items.length > 0)
    {
        var texts = [];
        for (var i = 0; i < items.length; i++) 
        {
            // extract the text only of the checked nodes
            texts.push(items[i].get_text());
        }
        text = texts.join(', '); // comma separated text
    }

    sender.set_text(text); // set the combobox text
}

function getCheckedNodes(nodes) {
    var node, childCheckedNodes;
    var checkedNodes = []; // array of the checked nodes

    for (var i = 0; i < nodes.get_count(); i++) {
        node = nodes.getNode(i);
        if (node.get_checked()) {
            checkedNodes.push(node); // add to array if checked
        }

        // to understand recursion, first you must understand recursion
        if (node.get_nodes().get_count() > 0)
        {
            // recursive function call
            childCheckedNodes = getCheckedNodes(node.get_nodes());

            if (childCheckedNodes.length > 0)
            {
                // append array with results from recursive call
                checkedNodes = checkedNodes.concat(childCheckedNodes);
            }
        }
    }

    return checkedNodes;
}