У меня уже есть 3 списка элементов, которые я хочу вставить в свой datagridview, введите описание изображения здесь

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

Поэтому для вставки данных я использовал следующий код:

        IList<string> ruas = new List<string>();
        foreach (var element in Gdriver.FindElements(By.ClassName("search-title")))
        {
            //ruas.Add(element.Text);
            table.Rows.Add(element.Text);


        }


        IList<string> codps = new List<string>();
        foreach(var Codpelement in Gdriver.FindElements(By.ClassName("cp")))
        {

            table.Rows.Add("",Codpelement.Text);

        }

        IList<string> Distritos = new List<string>();
        foreach (var Distritoelement in Gdriver.FindElements(By.ClassName("local")))
        {


            //Distritos.Add(Distritoelement.Text);
            table.Rows.Add("","",Distritoelement.Text.Substring(Distritoelement.Text.LastIndexOf(',') + 1));

        }

Не могли бы вы подсказать, как лучше сделать так, чтобы данные отображались сверху вниз?

Спасибо.

0
Pedro Alvim 21 Июн 2017 в 13:29
Лучше создать базу данных, а затем сделать ее источником данных DGV.
 – 
jdweng
21 Июн 2017 в 13:44

1 ответ

Лучший ответ

Проблема в том, что вы вводите одно значение для каждой строки. Всего у вас должно быть три строки, но у вас есть 3 * строк с количеством столбцов. Вместо вашего нынешнего подхода я рекомендую следующее:

    IList<string> ruas = new List<string>();
    foreach (var element in Gdriver.FindElements(By.ClassName("search-title")))
    {
        ruas.Add(element.Text);
    }


    IList<string> codps = new List<string>();
    foreach(var Codpelement in Gdriver.FindElements(By.ClassName("cp")))
    {
        codps.Add(Codpelement.Text);
    }

    IList<string> Distritos = new List<string>();
    foreach (var Distritoelement in Gdriver.FindElements(By.ClassName("local")))
    {
        Distritos.Add(Distritoelement.Text.Substring(Distritoelement.Text.LastIndexOf(',') + 1));
    }

    for (int i = 0; i < ruas.Count; i++) {
        table.Rows.Add(ruas.ElementAt(i), codps.ElementAt(i), Distritos.ElementAt(i));
    }
0
Lajos Arpad 21 Июн 2017 в 13:48
Спасибо за ответ! Подскажите, почему в первой строке столбца «Distritos» не отображаются данные?
 – 
Pedro Alvim
21 Июн 2017 в 14:36
Не за что. Трудно сказать, не зная реальных данных, которые у вас есть для Distritos. Возможно, что Distrito of Rua do Monte заканчивается запятой и несколькими пробелами после нее, так как в вашем алгоритме мы получаем часть Distrito после последней запятой, см .: Distritoelement.Text.Substring (Distritoelement.Text.LastIndexOf ( ',') + 1)
 – 
Lajos Arpad
21 Июн 2017 в 15:14
Я думаю, что у селена была проблема с селектором className, потому что я изменил его на XPath, и он работал нормально.
 – 
Pedro Alvim
21 Июн 2017 в 17:50