TestStack.White ListBox.SelectedItemText не работает

Взято из http://forum.jquery.com/topic/multiple-versions-of-jquery-on-the-same-page :

  • Исходная страница загружает его «jquery.versionX.js» - $ и jQuery принадлежат версииX.
  • Вы вызываете свой «jquery.versionY.js» - теперь $ и jQuery принадлежат версииY, плюс _$ и _jQuery принадлежат версииX.
  • my_jQuery = jQuery.noConflict(true); - теперь $ и jQuery принадлежат версииX, _$ и _jQuery, вероятно, null, а my_jQuery - версияY.

0
задан Lews Therin 16 January 2019 в 17:30
поделиться

2 ответа

Мне никогда не удавалось заставить это работать, выполняя итерацию вперед через список errorEvent в моем автоматизированном тестовом коде, но он РАБОТАЕТ, когда итерация назад через список errorEvent.

Телефонный код:

            for (int i = eventViewer.GetErrorEventsCount() - 1; i >= 0; i--)
        {
            bResult = eventViewer.SelectMainEventViaErrorEvent(i);
            if (!bResult)
            {
                break;
            }

            System.Threading.Thread.Sleep(2000);
        }

Контрольный код:

        public bool SelectMainEventViaErrorEvent(int eventIdx)
    {
        bool bSuccess = false;
        DisableToolTips(true);

        errorEvents.Select(eventIdx);
        errorEvents.SelectedItem.DoubleClick();

        System.Threading.Thread.Sleep(1000);

        log.Info($"SelectMainEventViaErrorEvent({eventIdx}) selected error event = {errorEvents.SelectedItemText}");
        log.Info($"SelectMainEventViaErrorEvent({eventIdx}) selected main event = {mainEvents.SelectedItemText}");

        if (errorEvents.SelectedItemText == mainEvents.SelectedItemText)
        {
            bSuccess = true;
        }

        return bSuccess;
    }
0
ответ дан Jeff H 16 January 2019 в 17:30
поделиться

Сравнение с обычным текстом - плохая идея, так как «Текст»! = «Текст». То, что вы можете использовать в вашем случае, это свойства DisplayMember и ValueMember.

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

Прежде всего создайте class, в котором будут храниться ваши значения и их идентификаторы. Я обычно создаю его следующим образом (поэтому я могу использовать этот класс позже для чего-то другого)

public class Int_String
{
    public int _int { get; set; } // Important to be declared like properties and not like variables
    public string _string { get; set; }
}

Теперь давайте заполним наш список следующим образом:

public YourForm()
{
    List<Int_String> list = new List<Int_String>();
    list.Add(new Int_String { _int = 1, _string = "Some text" }); // I am populating it manually but you will populate it from DB or somewhere else
    list.Add(new Int_String { _int = 2, _string = "Some other text" });
    list.Add(new Int_String { _int = 3, _string = "One more text" });

    // Now when we have list we need to bind it to our listbox.

    // IMPORTANT!!!!!
    // Display member and Value member properties SHOULD be able to be added before and after assigning datasource to control (like combobox) BUT for some reason on listbox it only works when you assign it AFTER you bind your datasource to listbox.
    // If you ever work with other controls and use these values, ALWAYS declare display member and value member BEFORE you bind datasource. Why? For now let's just say it is much faster but explanation is for other question

    myListBox1.DataSource = list;
    myListBox1.DisplayMember = "_string"; // When you start typing .DisplayMember, you will not get that property in recommendation since it is hidden so do not think there is not that property there.
    myListBox1.ValueMember = "_int"; // Same as above
}

Теперь, когда вы заполните Например, список и второй список с одинаковыми идентификаторами можно просто сделать if(listbox1.SelectedValue == listbox2.SelectedValue) и сравнить их, даже если их текст не равен, но идентификатор равен.

БОНУС: Также то, что вы можете сделать, это расширить класс следующим образом:

public class Int_String
{    
    public int _int { get; set; }
    public string _string { get; set; }

    public string SomethingOther = "AsD";


    public bool IsTrue()
    {
        return true;
    }
}

затем связать его таким же образом и сделать это:

Int_String item = listbox1.SelectedItem as Int_String;
bool check = item.IsTrue();
MessageBox.Show(item.SomethingOther);

Таким образом, в основном вы связываете весь класс для каждого элемента в списке отобразите для пользователя одну из переменных (в нашем случае _string), задайте ValueMember другую уникальную переменную, чтобы можно было легко выполнять поиск по всему списку и, когда необходимо, получить целый класс из этого элемента. [1117 ]

0
ответ дан Aleksa Ristic 16 January 2019 в 17:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: