![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Ох, очень надеюсь, что название темы будет соответствовать содержанию
мне очень нужна помощь по этой теме. В общем на сайте flash.demiart хороший человек с ником Chibis выложил отличный пример с поиском внутри флеша с использованием XML. Я его маленько переделал под себя, и вот что получилось:stop(); Stage.scaleMode = "NoScale"; ////////// Загрузка XML, тут все просто стандартная загрузка файла var myXML:XML = new XML(); myXML.ignoreWhite = true; myXML.load("Find.xml"); import mx.controls.alert; myXML.onLoad = function(success) { if (success) { populateTable(); } else { result_text.text = "Данные небыли загружены"+"\r"+"Файл: Find.xml"+"\r"+"небыл найден!" } }; ////////////////////////////////////// Загрузка XML ////////////////////////////////////// Datagrid, функция создания компонента DataGrid function populateTable() { var list:Array = new Array(); //создаем массив элементов для dataProvider for (n=0; n<myXML.firstChild.childNodes.length; n++) { //в цыкле перебираем весь хмл файл по нодам //создаем переменну для 1 колонки (ID) DataGrid var dlin = myXML.firstChild.childNodes[n].firstChild.firstChild.nodeValue; //создаем переменну для 2 колонки (Документы) DataGrid var shir = myXML.firstChild.childNodes[n].firstChild.nextSibling.firstChild.nodeValue; //создаем объект для записи всех разделенных нодов, то есть в компоненте создаем сами колонки и заполняем их var vis = myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.firstChild.nodeValue; var nazv = myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.nextSibling.firstChild.nodeValue; var myRow:Object = {Длина:dlin, Ширина:shir, Высота:vis, Название:nazv}; list.addItem(myRow); /////////////////////////// } myTable.dataProvider = list; //выводим в компонент ранее созданный и заполненный массив myTable.getColumnAt(0).width = 55; //задаем ширину колонки ID myTable.getColumnAt(1).width = 55; myTable.getColumnAt(2).width = 55; } ////////////////////////////////////// Datagrid //////////////////////////////////////////////////////////////////// Поиск ///////////////// Поиск ДЛИНЫ function search_dlin(myText) { var list:Array = new Array(); // создаем массив var Criteria = myText; //Создаем переменную Criteria = Criteria.toLowerCase(); //задаем параметр, что весь текст будет с маленькой буквы for (n=0; n<myXML.firstChild.childNodes.length; n++) { // перебираем в цыкле ноды // Это собственно и есть сам поиск indexOf(Criteria) != -1, более подробно написанно в хелпе про indexOf if (myXML.firstChild.childNodes[n].firstChild.firstChild.nodeValue.toLowerCase().indexOf(Criteria) != -1) { var dlin = myXML.firstChild.childNodes[n].firstChild.firstChild.nodeValue; var shir = myXML.firstChild.childNodes[n].firstChild.nextSibling.firstChild.nodeValue; var vis = myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.firstChild.nodeValue; var nazv = myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.nextSibling.firstChild.nodeValue; var myRow:Object = {Длина:dlin, Ширина:shir, Высота:vis, Название:nazv}; list.addItem(myRow); } } result_text.text = "Вы искали: " + mine.text + " Найдено " + list.length //Выводим в текстовое поле результат поиска myTable.dataProvider = list; } ///////////////// Поиск ШИРИНЫ ///////////////// Поиск по документу, все тоже самое, за единственным исключением путей до нодов function search_shir(myText) { var list:Array = new Array(); var Criteria = myText; Criteria = Criteria.toLowerCase(); for (n=0; n<myXML.firstChild.childNodes.length; n++) { if (myXML.firstChild.childNodes[n].firstChild.nextSibling.firstChild.nodeValue.toLowerCase().indexOf(Criteria) != -1) { var dlin = myXML.firstChild.childNodes[n].firstChild.firstChild.nodeValue; var shir = myXML.firstChild.childNodes[n].firstChild.nextSibling.firstChild.nodeValue; var vis = myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.firstChild.nodeValue; var nazv = myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.nextSibling.firstChild.nodeValue; var myRow:Object = {Длина:dlin, Ширина:shir, Высота:vis, Название:nazv}; list.addItem(myRow); } } result_text.text = "Вы искали: " + mine.text + " Найдено " + list.length //Выводим в текстовое поле результат поиска myTable.dataProvider = list; } //////ПОИСК ВЫСОТЫ function search_vis(myText) { var list:Array = new Array(); var Criteria = myText; Criteria = Criteria.toLowerCase(); for (n=0; n<myXML.firstChild.childNodes.length; n++) { if (myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.firstChild.nodeValue.toLowerCase().indexOf(Criteria) != -1) { var dlin = myXML.firstChild.childNodes[n].firstChild.firstChild.nodeValue; var shir = myXML.firstChild.childNodes[n].firstChild.nextSibling.firstChild.nodeValue; var vis = myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.firstChild.nodeValue; var nazv = myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.nextSibling.firstChild.nodeValue; var myRow:Object = {Длина:dlin, Ширина:shir, Высота:vis, Название:nazv}; list.addItem(myRow); } } result_text.text = "Вы искали: " + mine.text + " Найдено " + list.length //Выводим в текстовое поле результат поиска myTable.dataProvider = list; } /////Поиск по НАЗВАНИЮ function search_nazv(myText) { var list:Array = new Array(); var Criteria = myText; Criteria = Criteria.toLowerCase(); for (n=0; n<myXML.firstChild.childNodes.length; n++) { if (myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.nextSibling.firstChild.nodeValue.toLowerCase().indexOf(Criteria) != -1) { var dlin = myXML.firstChild.childNodes[n].firstChild.firstChild.nodeValue; var shir = myXML.firstChild.childNodes[n].firstChild.nextSibling.firstChild.nodeValue; var vis = myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.firstChild.nodeValue; var nazv = myXML.firstChild.childNodes[n].firstChild.nextSibling.nextSibling.nextSibling.firstChild.nodeValue; var myRow:Object = {Длина:dlin, Ширина:shir, Высота:vis, Название:nazv}; list.addItem(myRow); } } result_text.text = "Вы искали: " + mine.text + " Найдено " + list.length //Выводим в текстовое поле результат поиска myTable.dataProvider = list; } ///////////////// Поиск по документу //////////////////////////////////////////////////////////////////// Поиск ////////////////////////////////////////// Вывод значения дополнительного нода для привязки действия при клике мышью function showDetails() { for (n=0; n<myXML.firstChild.childNodes.length; n++) { if (myXML.firstChild.childNodes[n].firstChild.firstChild.nodeValue.indexOf(myTable.selectedItem.Длина) != -1) { _root.gotoAndPlay(myXML.firstChild.childNodes[n].lastChild.firstChild); } } } ////////////////////////////////////////// Вывод /////////////////////////////////////// Кнопки import mx.controls.RadioButton; //компонет RadioButton rb_dlin.selected = true; //Обозначаем который будет выделен по умолчанию /////////////////////////////////////Функция нажатия кнопки "Искать" searchDB.onRelease = function() { if (rb_dlin.selected == true) { //Проверяем если выделен 1 компонент то запускаем функцию search_Id(mine.text), см. выше search_dlin(mine.text); } if (rb_shir.selected == true) { search_shir(mine.text); } if (rb_vis.selected == true) { search_vis(mine.text); } if (rb_nazv.selected == true) { search_nazv(mine.text); } } Selection.setFocus(mine); //Задаем фокус текстовому полю mine для ввода слов поиска ///////Действие при клике мышью var DBdisplay = new Object(); DBdisplay.change = function(eventObject) { showDetails(); //При клике запускаем функцию showDetails(), см. выше }; myTable.addEventListener("change", DBdisplay); НАДО: чтобы в первых трёх столбиках(где только числовое значение), была возможность поиска чисел в пределах, ну к примеру 200, или 300. Тоесть например: есть несколько чисел там... 5500, 4900, 5124. И когда в строку поиска вбивают число 5000, то нашлись бы строки с числами 4900 и 5124, а 5500 уже нет, т.к. не в этом пределе.. Подскажите, где код так подковырнуть надо, чтобы он начал числа так искать, пожалуйста. Добавлено через 10 минут хм, посмотрел на код именно на форуме, где всё "видно" глазами. indexOf(Criteria) - это то, что мне надо, или нет? Сча поищу на эту тему ![]() Добавлено через 14 минут Эх, не то.. Добавлено через 38 минут кажется до меня начинает доходить, что надо подставить всего лишь какой-то текст в обработчик нажатия кнопки... Добавлено через 38 минут тоесть вот сюда: searchDB.onRelease = function() { if (rb_dlin.selected == true) { //Проверяем если выделен 1 компонент то запускаем функцию search_Id(mine.text), см. выше search_dlin(mine.text); } if (rb_shir.selected == true) { search_shir(mine.text); } if (rb_vis.selected == true) { search_vis(mine.text); } if (rb_nazv.selected == true) { search_nazv(mine.text); } помогите пожалуйста, народ Ищу ищу, ничё найти не могу толком.. хоть подтолкните в каком направлении искать..Добавлено через 2 часа 0 минут Я уже думаю через Math.random каким-то макаром сделать. Ну где вы, профи? ![]()
__________________
ReAlly ExPloOiT Последний раз редактировалось DizzWebS; 21.06.2009 в 20:14. |
|
|||||
|
теперь понял, что то, что написал выше про кнопку - бред. Не там искать надо.
__________________
ReAlly ExPloOiT |
|
|||||
|
сравнивать каждое значение с вашими пределами.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:04. |
|
|
« Предыдущая тема | Следующая тема » |
|
|