Выбор элемента из списка по значению переменной

StreamK

Client
Регистрация
15.01.2013
Сообщения
16
Благодарностей
0
Баллы
1
Привет Всем.

1. Есть таблица со значениями
key1.txt
key2.txt
key3.txt

Записываю key1.txt в переменную key1

2. Есть выпадающий список со значениями
key1.txt
key2.txt
key3.txt

Нужно по значению из переменной найти такой же элемент в выпадающем списке, и выбрать его.

К примеру делаю запись для выбора key2.txt
в Value записыватся значение 1

Через конструтор действий и поиск элементов нахожу свой элемент в списке. Но при добавлении в проект, вместо значения value 1, zenno подставляет имя элемента value= key1.txt. Но мне нужен порядковый номер, этого элемента, чтобы проект заработал.

Помогите разобраться

Спасибо
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 117
Баллы
113
Привет Всем.

1. Есть таблица со значениями
key1.txt
key2.txt
key3.txt

Записываю key1.txt в переменную key1

2. Есть выпадающий список со значениями
key1.txt
key2.txt
key3.txt

Нужно по значению из переменной найти такой же элемент в выпадающем списке, и выбрать его.

К примеру делаю запись для выбора key2.txt
в Value записыватся значение 1

Через конструтор действий и поиск элементов нахожу свой элемент в списке. Но при добавлении в проект, вместо значения value 1, zenno подставляет имя элемента value= key1.txt. Но мне нужен порядковый номер, этого элемента, чтобы проект заработал.

Помогите разобраться

Спасибо
как вариант: обработать регуляркой переменную в которой содержится key1.txt - выделить из нее цифровую часть и использовать..
регулярка: \d
 

StreamK

Client
Регистрация
15.01.2013
Сообщения
16
Благодарностей
0
Баллы
1
так не подойдет, исходные значения могут иметь любое значение.
А как зенно при записи узнает значение value? например в списке из 100 элементов, если я вручную указываю цифру значение value, то все правильно выбирается.
А если как название key-2.txt, или field2-3 то не работает.

Код страницы для выбора элемента вот такой
Код:
<h3>Выберите файл кейвордов</h3>
    </label>
               <select name="keysfilename" id="field2">
                   <option id="field2-1" value="">
                       ----------------------------
                   </option>
                   <option id="field2-2" value="key-1.txt">
                               key-1.txt
                           </option> <option id="field2-3" value="key-2.txt">
                               key-2.txt
                           </option> <option id="field2-4" value="key-3.txt">
                               key-3.txt
                           </option> <option id="field2-5" value="key-4.txt">
                               key-4.txt
                           </option>
                           </option>
                    </select>
 
Последнее редактирование:

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
может быть значение само установится через selecteditems? попробуйте в конструкторе
если нет тогда
var key1 = project.Variables["key1"].Value;
var eselect = instance.ActiveTab.FindElementById("field2");
var index = -1;
var index = eselect.GetChildren(false).Select((i,e)=>new {Index = i+1, Element = e}).Where(o=>o.Element.GetAttribute("value") == key1).FirstOrDefault().Index;
if(index < 0)
throw new Exception(key1+ " не найден в выпадающем списке)");
eselect.SetAttribute("value", index.ToString());
код не тестил написал прямо тут
 
Последнее редактирование:

StreamK

Client
Регистрация
15.01.2013
Сообщения
16
Благодарностей
0
Баллы
1
через selecteditems не устанавливается тоже
и код тоже не заработал http://prntscr.com/7r2t1o

Вот код с div ами
Код:
        <div id="field2-container" class="field f_100">
               <label for="field2">
    <h3>Выберите файл кейвордов</h3>
    </label>
               <select name="keysfilename" id="field2">
                   <option id="field2-1" value="">
                       ----------------------------
                   </option>
                   <option id="field2-2" value="key-1.txt">
                               key-1.txt
                           </option> <option id="field2-3" value="key-2.txt">
                               key-2.txt
                           </option> <option id="field2-4" value="key-3.txt">
                               key-3.txt
                           </option> <option id="field2-5" value="key-4.txt">
                               key-4.txt
                           </option>
               </select>
          </div>
 
Последнее редактирование:

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
var key1 = "key-2.txt";
var eselect = instance.ActiveTab.FindElementById("field2");
int i=0;
var options = eselect.GetChildren(false).Elements;
for(; i<options.Length; i++)
if(options.GetAttribute("value") == key1)
break;
if(i > options.Length)
throw new Exception(key1+ " не найден в выпадающем списке)");

eselect.SetAttribute("value", i.ToString());
так точно работает - проверял.
 

StreamK

Client
Регистрация
15.01.2013
Сообщения
16
Благодарностей
0
Баллы
1
Извини за нубский вопрос, но правильно ли я добавляю код?
Выбираю "добавить действие"-"свой код"-"C# код"
и опять ошибку выбивает(
http://prntscr.com/7r39ai
http://prntscr.com/7r39ob
 

StreamK

Client
Регистрация
15.01.2013
Сообщения
16
Благодарностей
0
Баллы
1
Компиляция кода. Ошибка в действии "CS1061" ""System.Array" не содержит определение для "GetAttribute". Не удалось найти метод расширения "GetAttribute", принимающий первый аргумент типа "System.Array" (пропущена директива using или ссылка на сборку?)". [Строка: 7; Cтолбец: 12]
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
странно как то код сохранился еще раз
var key1 = "key-2.txt";
var eselect = instance.ActiveTab.FindElementById("field2");
int i=0;
var options = eselect.GetChildren(false).Elements;
for(; i<options.Length; i++)
if(options.GetAttribute("value") == key1)
break;
if(i > options.Length)
throw new Exception(key1+ " не найден в выпадающем списке)");

eselect.SetAttribute("value", i.ToString());
 

StreamK

Client
Регистрация
15.01.2013
Сообщения
16
Благодарностей
0
Баллы
1
один в один как и прошлый раз код сохранился)
не мог бы запринтскринить его?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 117
Баллы
113
вчера кто то жаловался, что если код не в тегах CODE постить на форуме, то возможны ошибки.. хотя вон даже dd так делает, хез..
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
дебильный фреймворк на форуме
Код:
var key1 = "key-2.txt";
var eselect = instance.ActiveTab.FindElementById("field2");
int i=0;
var options = eselect.GetChildren(false).Elements;
for(; i<options.Length; i++)
    if(options[i].GetAttribute("value") == key1)
        break;
if(i > options.Length)
    throw new Exception(key1+ " не найден в выпадающем списке)");
eselect.SetAttribute("value", i.ToString());
вроде норм
 
Последнее редактирование:
  • Спасибо
Реакции: StreamK

StreamK

Client
Регистрация
15.01.2013
Сообщения
16
Благодарностей
0
Баллы
1
Класс !!
Спасибо
 

Darkoman

Client
Регистрация
17.03.2018
Сообщения
54
Благодарностей
7
Баллы
8
Парни а есть шаблон живой. Чтобы понять как это работает?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)