Элемент Foreach в списке - PullRequest
       8

Элемент Foreach в списке

0 голосов
/ 18 сентября 2018

У меня есть список Listbox1, который отображает список ZoneID

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

private void Btn_AddModel_Click(object sender, EventArgs e) {
  using(SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MfgDataCollector"].ToString())) {
    List <Zone> Zonelist = conn.Query<Zone>("GetZone", commandType: CommandType.StoredProcedure).ToList<Zone>();

    listBox1.DataSource = Zonelist;
    listBox1.ValueMember = "ZoneID";
  }

  DisplayMessageBoxForEach();
}


private void DisplayMessageBoxForEach() {
  foreach(object ValueMember in listBox1.Items) {
    MessageBox.Show(listBox1.ValueMember.ToString());
  }
}

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

Спасибо всем!

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Внести изменения в цикл foreach:

Zone objZone = (Zone) ValueMember:

MessageBox.Show(objZone.ZoneID);
0 голосов
/ 20 сентября 2018

Я закончил тем, что отказался от глупости и записал команду SQL в приложении в список. Мне было гораздо проще выполнить задание.Работает в настоящее время.Спасибо !

conn.Open();
                    SqlCommand cmd = new SqlCommand("Select ZoneID from Zones", conn);
                    SqlDataReader myReader = cmd.ExecuteReader();
    List<int> zoneIDs = new List<int>();
                        while (myReader.Read())
                        {
                            zoneIDs.Add(Convert.ToInt32(myReader["ZoneID"]));
                        }
                        cmd.Dispose();
                        myReader.Close();

                        foreach (int zones in zoneIDs)
                        {

                            int Zone_ID = zones;
                        }
0 голосов
/ 18 сентября 2018

ValueMember - это просто свойство, которое определяет, какое свойство используется в вашем источнике данных.

Ваш цикл должен выглядеть примерно так:

foreach(Zone zone in (List<Zone>)listBox1.DataSource) {
  MessageBox.Show(zone.ToString());
}

Замените ToString() налюбое свойство, которое вы хотите отобразить из класса Zone.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...