powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Компонент раскрывающийся checkbox
13 сообщений из 13, страница 1 из 1
Компонент раскрывающийся checkbox
    #38601116
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно древовидное нечто с чекбоксами для выбора. Чекбокс верхнего уровня выделяет все чекбоксы нижнего. Что есть?
Эскиз
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38601117
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот правильный
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38601121
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только неправильно нарисовано что верхний выделен а внизу только 1 выделен
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38601143
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38601237
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FatherSql,

TreeView c checkbox не подходят?
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38601250
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708FatherSql,

TreeView c checkbox не подходят?
да это оно но там скрипт нужен который предоставлен постом выше
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38601333
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как поместить этот вью во чтото типа окна чтобы высота была скажем 600 а если список длинный то скроллы?
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38601565
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FatherSqlVIT2708FatherSql,

TreeView c checkbox не подходят?
да это оно но там скрипт нужен который предоставлен постом выше

Что там за скрипт?
Если необходимо что бы все дочерние ноды также отмечались так это легко и программно можна сделать.
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38604343
фазерsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите. Это дерево было кинуто на udaptepanel, узлы дерева подгружаются динамически после раскрытия, соответствено после первой подгрузки скрипт слетел (до нее работал). В чем дело? скрипт выглядит так:
" <script type="text/javascript">
$(function () {
$("[id*=tvObjects] input[type=checkbox]").bind("click", function () {
var table = $(this).closest("table");
if (table.next().length > 0 && table.next()[0].tagName == "DIV") {
//Is Parent CheckBox
var childDiv = table.next();
var isChecked = $(this).is(":checked");
$("input[type=checkbox]", childDiv).each(function () {
if (isChecked) {
$(this).attr("checked", "checked");
} else {
$(this).removeAttr("checked");
}
});
} else {
//Is Child CheckBox
var parentDIV = $(this).closest("DIV");
if ($("input[type=checkbox]", parentDIV).length == $("input[type=checkbox]:checked", parentDIV).length) {
$("input[type=checkbox]", parentDIV.prev()).attr("checked", "checked");
} else {
$("input[type=checkbox]", parentDIV.prev()).removeAttr("checked");
}
}
});
})

</script>"
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38604717
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фазерsql,

попробуйте в updatepanel тригеры добавить
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38608691
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так, обнаружен косяк в этом скрипте. А именно:
когда убираешь чекбокс то он убирает чекбокс только у непосредственного предка. А предков предка нет. Алгоритм понял как сделать но знаний jquery не хватает чтобы быстро реализовать.
Итак идея такая:
основная ошибка у создателя такая, он не проверяет вверх и вниз чекбоксы а только либо вверх (если нет вложенных узлов) либо вниз (если есть вложенные ноды). Это отбражено в этой строчке кода
Код: javascript
1.
2.
if (table.next().length > 0 && table.next()[0].tagName == "DIV") {
//Is Parent CheckBox



Далее.
Вверх он смотрит этим кодом:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var parentDIV = $(this).closest("DIV");
тут проверка что количество чекбоксов равно количеству помеченных чекбоксов
if ($("input[type=checkbox]", parentDIV).length == $("input[type=checkbox]:checked", parentDIV).length) {
если равны то значит парента надо пометить выделенным
$("input[type=checkbox]", parentDIV.prev()).attr("checked", "checked");
} else {
ну а если нет то надо снять выделение
$("input[type=checkbox]", parentDIV.prev()).removeAttr("checked");
}
}
});


соответсвтенно не хватает пробега до рута вверх, то есть он смотрит только одного предка а надо зарядить цикл пока парент != нулл. Сейчас вот думаю как сдеалть, есть подозрение что при помощи jquery это делается в одну строку.
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38608891
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сам сделал, работает вроде идеально
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
 $(function () {
             $("[id*=TreeView1] input[type=checkbox]").live("click", function () {
                 var table = $(this).closest("table");
                 var isChecked = $(this).is(":checked");

                 if (table.next().length > 0 && table.next()[0].tagName == "DIV") {
                     //Is Parent CheckBox
                     var childDiv = table.next();
                     $("input[type=checkbox]", childDiv).each(function () {
                         if (isChecked) {
                             $(this).attr("checked", "checked");
                         } else {
                             $(this).removeAttr("checked");
                         }
                     });
                 }

                $(this).parents("div").each(function () 
                {
                    if ($("input[type=checkbox]", $(this)).length == $("input[type=checkbox]:checked", $(this)).length)
                        $("input[type=checkbox]", $(this).prev()).attr("checked", "checked");
                        else
                            $("input[type=checkbox]", $(this).prev()).removeAttr("checked");
             
                });
                 
             });
         })
...
Рейтинг: 0 / 0
Компонент раскрывающийся checkbox
    #38608895
FatherSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приходится простым русским парням за индусами дописывать
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Компонент раскрывающийся checkbox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]