chandan kumar Ответов: 1

Java скрипт на treeview для выбора 1 узла со списком каталогов


У меня есть treeview в asp.net с динамическим содержимым , заполненным во время выполнения, я хочу выбрать только один узел , для которого я скопировал java script из интернета, чтобы сделать это, что работает, так как я новичок в c# и java script, но у него есть одна проблема, что он работает на уровне страницы, то есть он также снимает все другие элементы управления флажками на этой же странице.

Я хочу, чтобы этот java-скрипт работал только с этим элементом treeview , а не со всеми элементами управления на уровне страницы, я попытался указать treeview в качестве имени тега в функции JS, но не сработал, пожалуйста, помогите мне в этом отношении, что именно нужно изменить

Мой treeview определяется следующим образом на странице aspx :
<asp:TreeView ID="tvwItems"

и это называется, как показано ниже в файле кода c# на уровне рендеринга страницы события :
tvwItems.Attributes.Add("OnClick","client_OnTreeNodeChecked(event)");



Java-скрипт выглядит следующим образом :

Что я уже пробовал:

<script type="text/javascript">
    // select only one folder from treeview
    function client_OnTreeNodeChecked(event) {
        var treeNode = event.srcElement || event.target;
        if (treeNode.tagName == "INPUT" && treeNode.type == "checkbox") {
            if (treeNode.checked) {
                uncheckOthers(treeNode.id);
            }
        }
    }

    function uncheckOthers(id) {
        var elements = document.getElementsByTagName('input');
        // loop through all input elements in form -- issue here need to limit to that tree only , help required from expert ??
        for (var i = 0; i < elements.length; i++) {
            if (elements.item(i).type == "checkbox") {
                if (elements.item(i).id != id) {
                    elements.item(i).checked = false;
                }
            }
        }
    }
     </script>


Большое спасибо
Чандан

ZurdoDev

Во-первых, вам действительно нужно понять, как работает код, и тогда его будет легко исправить. Опасно использовать код, который вы нашли в интернете, но не понимаете.

Он перебирает элементы с другим идентификатором и снимает с них флажки.

1 Ответов

Рейтинг:
1

chandan kumar

Спасибо за подсказку ,я добавил имя элемента с этим синтаксисом, и теперь он работает так, как ожидалось

var elements = document.getElementById("<% = tvwItems.ClientID %>").getElementsByTagName('input');