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

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
Сообщения
22 566
Благодарностей
10 103
Баллы
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
Благодарностей
792
Баллы
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
Благодарностей
792
Баллы
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
Благодарностей
792
Баллы
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
Сообщения
22 566
Благодарностей
10 103
Баллы
113
вчера кто то жаловался, что если код не в тегах CODE постить на форуме, то возможны ошибки.. хотя вон даже dd так делает, хез..
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
792
Баллы
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)