Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 1
Регистрация: 22.09.2014
Сообщений: 132

Сортировка по cbox в ListView

25.09.2015, 17:08. Показов 1129. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
и еще один вопрос, вернее по этому проекту их очень много, но этот пока что самый важный.

Идея заключается в том чтобы результаты выборки которые определены в ListView

1. Все данные изначально заливаються в FormLoad
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                conn.Open();
                try
                {
                    DbCommand command = conn.CreateCommand(); //создаем коммаду на вывод
                    command.CommandText = @"select do.price, ost.humanSex, os.size, obn.name, oname.modelname FROM DataObuvnoi do, ObuvnoiSexType ost, ObuvnoiSyze os, Obuvnoibrandname obn, Obuvnoiname oname where do.id_sex = ost.id and do.id_size = os.id and do.id_brand = obn.id and do.id_name = oname.id ";
 
                    DbDataReader reader = command.ExecuteReader(); // не помню что делает
                    //вывели значения в таблицу
                    while (reader.Read())
                    {
                        ListViewItem item = lvVisionDB.Items.Add(new ListViewItem());
                        item.Text = (reader.GetFloat(reader.GetOrdinal("price"))).ToString();
                        item.SubItems.Add(reader.GetString(reader.GetOrdinal("humanSex")));
                        item.SubItems.Add((reader.GetInt32(reader.GetOrdinal("size"))).ToString());
                        item.SubItems.Add(reader.GetString(reader.GetOrdinal("name")));
                        item.SubItems.Add(reader.GetString(reader.GetOrdinal("modelname")));
                    }
                    lvVisionDB.View = View.Details;
                    lvVisionDB.Columns.Add("Цена");
                    lvVisionDB.Columns[0].Width = 40;
                    lvVisionDB.Columns.Add("Пол");
                    lvVisionDB.Columns[1].Width = 60;
                    lvVisionDB.Columns.Add("Размер");
                    lvVisionDB.Columns[2].Width = 55;
                    lvVisionDB.Columns.Add("Производитель");
                    lvVisionDB.Columns[3].Width = 100;
                    lvVisionDB.Columns.Add("Название");
                    lvVisionDB.Columns[4].Width = 80;
                    reader.Close();
 
                    //отображение в cbSex-------------------------------------------/
                    string queryCbSex = "select humanSex from ObuvnoiSexType";    //
                    SqlCommand cSex = new SqlCommand(queryCbSex, conn);           //
                    DataTable dtSiex = new DataTable();                           //
                    SqlDataAdapter daSex = new SqlDataAdapter(cSex);              //
                    daSex.Fill(dtSiex);                                           //
                    cbSex.DataSource = dtSiex;                                    //
                    cbSex.DisplayMember = "humanSex";// столбец для отображения   //
                    cbSex.SelectedIndex = -1;                                     //
                    cbSex.DropDownStyle = ComboBoxStyle.DropDownList;             //
 
                    ////отображение в cbSize----------------------------------------//
                    string queryCbSize = "select size from ObuvnoiSyze";            //
                    SqlCommand cSize = new SqlCommand(queryCbSize, conn);           //
                    DataTable dtSize = new DataTable();                             //
                    SqlDataAdapter daSize = new SqlDataAdapter(cSize);              //
                    daSize.Fill(dtSize);                                            //
                    cbSize.DataSource = dtSize;                                     //
                    cbSize.DisplayMember = "size";// столбец для отображения        //
                    cbSize.SelectedIndex = -1;                                      //
                    cbSize.DropDownStyle = ComboBoxStyle.DropDownList;              //
 
                    ////отображение в cbSize----------------------------------------//
                    string queryCbBrandName = "select name from ObuvnoiBrandName";  //
                    SqlCommand cBrand = new SqlCommand(queryCbBrandName, conn);     //
                    DataTable dtBrand = new DataTable();                            //
                    SqlDataAdapter daBrand = new SqlDataAdapter(cBrand);            //
                    daBrand.Fill(dtBrand);                                          //
                    cbBrand.DataSource = dtBrand;                                   //
                    cbBrand.DisplayMember = "name";                                 //
                    cbBrand.SelectedIndex = -1;                                     //
                    cbBrand.DropDownStyle = ComboBoxStyle.DropDownList;             //
                }
                catch (DbException dbEx)
                {
                    MessageBox.Show(dbEx.Message);
                }
            }
            catch (SqlException conectionEx)
            {
                MessageBox.Show(conectionEx.Message);
                conn.Close();
            }
        }

тут все работает тут никаких претензий нет.

проблема в том когда бывираю элемент combox и прописываю обработчик для кнопки найти (по выбранным параметрам) , мой comboBox - ничего в себе не хранит (((

Пытался разными способами
C#
1
2
3
4
5
6
 private void btSearch_Click(object sender, EventArgs e)
        {
            string sex = cbSex.SelectedItem.ToString();//.SelectedText;
            string size = cbSize.SelectedText;
            string brandName = cbBrand.Text;
        }
но в deBug я вижу только "" - пустое значение ((

код БД на msSql
Кликните здесь для просмотра всего текста
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
----доступ к базе данных
--CREATE DATABASE Obuvnoi
 
--Create Table AccessToObuvnoi (
--id int identity(1,1) primary key,
--login_ varchar(25) not null,
--password_ varchar(30) not null 
--)
 
--INSERT INTO AccessToObuvnoi VALUES ('ivan', 'ivanov')
--INSERT INTO AccessToObuvnoi VALUES ('petr', 'petrov')
SELECT * FROM AccessToObuvnoi
 
---- таблица ПОЛ
--create table ObuvnoiSexType(
--id int identity(1,1) primary key,
--humanSex varchar (15) not null
--)
--INSERT INTO ObuvnoiSexType VALUES ('мужские')
--INSERT INTO ObuvnoiSexType VALUES ('женские')
--INSERT INTO ObuvnoiSexType VALUES ('детские')
 
----таблица размер
--create table ObuvnoiSyze(
--id int identity(1,1) primary key,
--size int not null
--)
--INSERT INTO ObuvnoiSyze VALUES (14)
--INSERT INTO ObuvnoiSyze VALUES (15)
--INSERT INTO ObuvnoiSyze VALUES (16)
 
select * from ObuvnoiSyze
 
----таблица тип обуви
--create table ObuvnoiType(
--id int identity(1,1) primary key,
--typ varchar (25) not null 
--)
--INSERT INTO ObuvnoiType VALUES ('Спортивная обувь')
--INSERT INTO ObuvnoiType VALUES ('Ботинки')
 
select * from ObuvnoiType
--DELETE FROM ObuvnoiType
--WHERE id = 3
--)
type 
 
----цвет обуви
--Create Table ObuvnoiColor (
--id int identity(1,1) primary key,
--color varchar(20) not null,
--)
--INSERT INTO ObuvnoiColor VALUES ('черный')
 
select * from ObuvnoiColor
 
----бренд
--Create Table ObuvnoiBrandName (
--id int identity(1,1) primary key,
--name varchar(40) not null,
--)
--INSERT INTO ObuvnoiBrandName VALUES ('Adidas')
--INSERT INTO ObuvnoiBrandName VALUES ('ALDO')
select * from ObuvnoiBrandName
 
---- название модели
--Create Table ObuvnoiName (
--id int identity(1,1) primary key,
--modelName varchar(40) not null,
--)
--INSERT INTO ObuvnoiName  VALUES ('LVS')
--INSERT INTO ObuvnoiName  VALUES ('Neo City Racer')
select * from ObuvnoiName
 
--создали общую таблицу
Create Table AllData (
    price real,
    id_sex int not null references ObuvnoiSexType(id),
    id_syze int not null references ObuvnoiSyze (id),
    id_brand int not null references ObuvnoiBrandName (id),
    id_name int not null references ObuvnoiName(id)
    )
    
create table DataObuvnoi
(
    price real,
    id_sex int not null foreign key (id_sex)references ObuvnoiSexType (id),
    id_size int not null foreign key (id_size)references ObuvnoiSyze (id),
    id_brand int not null foreign key (id_brand)references ObuvnoiBrandName (id),
    id_name int not null foreign key (id_name)references ObuvnoiName (id),
)
 
"select price, id_sex, id_size, id_brand, id_name FROM DataObuvnoi"
 
insert into DataObuvnoi values (54.99, 1, 27, 1, 1)
insert into DataObuvnoi values (54.99, 1, 28, 1, 1)
 
select * from DataObuvnoi


весь код c#
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace ShoesShop
{
    public partial class Form1 : Form
    {
 
        static string connStr = @"Data Source=(local)\SQLEXPRESS; 
                            Initial Catalog=master;
                            Integrated Security=True";
        SqlConnection conn = new SqlConnection(connStr);
 
        string whereStr;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                conn.Open();
                try
                {
                    DbCommand command = conn.CreateCommand(); //создаем коммаду на вывод
                    command.CommandText = @"select do.price, ost.humanSex, os.size, obn.name, oname.modelname FROM DataObuvnoi do, ObuvnoiSexType ost, ObuvnoiSyze os, Obuvnoibrandname obn, Obuvnoiname oname where do.id_sex = ost.id and do.id_size = os.id and do.id_brand = obn.id and do.id_name = oname.id ";
 
                    DbDataReader reader = command.ExecuteReader(); // не помню что делает
                    //вывели значения в таблицу
                    while (reader.Read())
                    {
                        ListViewItem item = lvVisionDB.Items.Add(new ListViewItem());
                        item.Text = (reader.GetFloat(reader.GetOrdinal("price"))).ToString();
                        item.SubItems.Add(reader.GetString(reader.GetOrdinal("humanSex")));
                        item.SubItems.Add((reader.GetInt32(reader.GetOrdinal("size"))).ToString());
                        item.SubItems.Add(reader.GetString(reader.GetOrdinal("name")));
                        item.SubItems.Add(reader.GetString(reader.GetOrdinal("modelname")));
                    }
                    lvVisionDB.View = View.Details;
                    lvVisionDB.Columns.Add("Цена");
                    lvVisionDB.Columns[0].Width = 40;
                    lvVisionDB.Columns.Add("Пол");
                    lvVisionDB.Columns[1].Width = 60;
                    lvVisionDB.Columns.Add("Размер");
                    lvVisionDB.Columns[2].Width = 55;
                    lvVisionDB.Columns.Add("Производитель");
                    lvVisionDB.Columns[3].Width = 100;
                    lvVisionDB.Columns.Add("Название");
                    lvVisionDB.Columns[4].Width = 80;
                    reader.Close();
 
                    //отображение в cbSex-------------------------------------------/
                    string queryCbSex = "select humanSex from ObuvnoiSexType";    //
                    SqlCommand cSex = new SqlCommand(queryCbSex, conn);           //
                    DataTable dtSiex = new DataTable();                           //
                    SqlDataAdapter daSex = new SqlDataAdapter(cSex);              //
                    daSex.Fill(dtSiex);                                           //
                    cbSex.DataSource = dtSiex;                                    //
                    cbSex.DisplayMember = "humanSex";// столбец для отображения   //
                    cbSex.SelectedIndex = -1;                                     //
                    cbSex.DropDownStyle = ComboBoxStyle.DropDownList;             //
 
                    ////отображение в cbSize----------------------------------------//
                    string queryCbSize = "select size from ObuvnoiSyze";            //
                    SqlCommand cSize = new SqlCommand(queryCbSize, conn);           //
                    DataTable dtSize = new DataTable();                             //
                    SqlDataAdapter daSize = new SqlDataAdapter(cSize);              //
                    daSize.Fill(dtSize);                                            //
                    cbSize.DataSource = dtSize;                                     //
                    cbSize.DisplayMember = "size";// столбец для отображения        //
                    cbSize.SelectedIndex = -1;                                      //
                    cbSize.DropDownStyle = ComboBoxStyle.DropDownList;              //
 
                    ////отображение в cbSize----------------------------------------//
                    string queryCbBrandName = "select name from ObuvnoiBrandName";  //
                    SqlCommand cBrand = new SqlCommand(queryCbBrandName, conn);     //
                    DataTable dtBrand = new DataTable();                            //
                    SqlDataAdapter daBrand = new SqlDataAdapter(cBrand);            //
                    daBrand.Fill(dtBrand);                                          //
                    cbBrand.DataSource = dtBrand;                                   //
                    cbBrand.DisplayMember = "name";                                 //
                    cbBrand.SelectedIndex = -1;                                     //
                    cbBrand.DropDownStyle = ComboBoxStyle.DropDownList;             //
                }
                catch (DbException dbEx)
                {
                    MessageBox.Show(dbEx.Message);
                }
            }
            catch (SqlException conectionEx)
            {
                MessageBox.Show(conectionEx.Message);
                conn.Close();
            }
        }
 
        private void btSearch_Click(object sender, EventArgs e)
        {
            string sex = cbSex.SelectedItem.ToString();//.SelectedText;
            string size = cbSize.SelectedText;
            string brandName = cbBrand.Text;
        }
    }
}


Если можете помочь, посмотрите...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2015, 17:08
Ответы с готовыми решениями:

Сортировка listView. Как узнать длину listview?
Есть listview состоящий из чисел(только числа в string). Как их сортировать по возрастанию? (т.е. так, чтобы на верхнем месте в listview...

Сортировка ListView
Здравствуйте. Помогите отсортировать список в ListView: final ArrayList<String> list = new ArrayList<>(); final...

Listview и сортировка
вобщем решил сделать сортировку,по числам норм сортирует,по именам нет,в чем проблема колонки такие номер...

8
 Аватар для wm_leviathan
214 / 214 / 73
Регистрация: 12.01.2011
Сообщений: 767
25.09.2015, 19:05
Один вопрос почему ListView ? почему не dataGridView который намного удобнее ? это так эстетика.
Запросом что вы тащите в comboBox данные отображаются ? просто не могу понять вопрос нет вообще данных в comboBox'е или не могу выбранное значение передать дальше в функцию ?
0
4 / 4 / 3
Регистрация: 25.09.2015
Сообщений: 19
26.09.2015, 13:07
Цитата Сообщение от Baeron Посмотреть сообщение
//отображение в cbSex-------------------------------------------/
string queryCbSex = "select humanSex from ObuvnoiSexType"; * *//
SqlCommand cSex = new SqlCommand(queryCbSex, conn); * * * * * //
DataTable dtSiex = new DataTable(); * * * * * * * * * * * * * //
SqlDataAdapter daSex = new SqlDataAdapter(cSex); * * * * * * *//
daSex.Fill(dtSiex); * * * * * * * * * * * * * * * * * * * * * //
cbSex.DataSource = dtSiex; * * * * * * * * * * * * * * * * * *//
cbSex.DisplayMember = "humanSex";// столбец для отображения * //
cbSex.SelectedIndex = -1; * * * * * * * * * * * * * * * * * * //
cbSex.DropDownStyle = ComboBoxStyle.DropDownList; * * * * * * //
Проблема вот тут.
Вы создали DataTable с именем dtSiex (молодец) и указали его в качестве DataSource (тоже правильно), а вот саму DataTable заполнить забыли
Заполнение таблицы DataTable:
C#
1
dtSiex.Load(cSex.ExecuteReader());
в вашем случае:
C#
1
2
3
4
5
 string queryCbSex = "select humanSex from ObuvnoiSexType";   //текст запроса
 SqlCommand cSex = new SqlCommand(queryCbSex, conn);        //инициализация команды для выполнения запроса в базу
 DataTable dtSiex = new DataTable();               //создание таблицы для результата
 dtSiex.Load(cSex.ExecuteReader());          //загрузка результатов запроса в datatable. datatable сам обработает executeReader: вызовет, считает данные и закроет Reader
 cbSex.DataSource = dtSiex;   //указываем datatable как источник данных комбобоксу
0
 Аватар для wm_leviathan
214 / 214 / 73
Регистрация: 12.01.2011
Сообщений: 767
26.09.2015, 13:43
KonstantinL2015, а это чем не годится?
C#
1
daSex.Fill(dtSiex);
0
4 / 4 / 3
Регистрация: 25.09.2015
Сообщений: 19
26.09.2015, 13:58
Да, действительно, не увидел.
могли бы вы пояснить странную приверженность форума к dataAdapter? для чего создавать объект для заполнения dataTable, который самостоятельно умеет заполняться из SqlCommand?

Добавлено через 7 минут
По теме: почему бы не засунуть наполнение данными в конструктор формы? сразу после InitializeComponent()
0
2 / 2 / 1
Регистрация: 22.09.2014
Сообщений: 132
26.09.2015, 20:37  [ТС]
Цитата Сообщение от KonstantinL2015 Посмотреть сообщение
Проблема вот тут.
Цитата Сообщение от wm_leviathan Посмотреть сообщение
не годится?
Спасибо за то что не остались равнодушными.
все получилось реализовал это вот так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace ShoesShop
{
    public partial class Form1 : Form
    {
 
        static string connStr = @"Data Source=(local)\SQLEXPRESS; 
                            Initial Catalog=master;
                            Integrated Security=True";
        SqlConnection conn = new SqlConnection(connStr);
 
        string whereStr;
 
        public Form1()
        {
            InitializeComponent();
            conn.Open();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
             //   conn.Open();
                try
                {
                    DbCommand command = conn.CreateCommand(); //создаем коммаду на вывод
                    command.CommandText = @"select do.price, ost.humanSex, os.size, obn.name, oname.modelname FROM DataObuvnoi do, ObuvnoiSexType ost, ObuvnoiSyze os, Obuvnoibrandname obn, Obuvnoiname oname where do.id_sex = ost.id and do.id_size = os.id and do.id_brand = obn.id and do.id_name = oname.id ";
 
                    DbDataReader reader = command.ExecuteReader(); // не помню что делает
                    //вывели значения в таблицу
                    while (reader.Read())
                    {
                        ListViewItem item = lvVisionDB.Items.Add(new ListViewItem());
                        item.Text = (reader.GetFloat(reader.GetOrdinal("price"))).ToString();
                        item.SubItems.Add(reader.GetString(reader.GetOrdinal("humanSex")));
                        item.SubItems.Add((reader.GetInt32(reader.GetOrdinal("size"))).ToString());
                        item.SubItems.Add(reader.GetString(reader.GetOrdinal("name")));
                        item.SubItems.Add(reader.GetString(reader.GetOrdinal("modelname")));
                    }
                    lvVisionDB.View = View.Details;
                    lvVisionDB.Columns.Add("Цена");
                    lvVisionDB.Columns[0].Width = 40;
                    lvVisionDB.Columns.Add("Пол");
                    lvVisionDB.Columns[1].Width = 60;
                    lvVisionDB.Columns.Add("Размер");
                    lvVisionDB.Columns[2].Width = 55;
                    lvVisionDB.Columns.Add("Производитель");
                    lvVisionDB.Columns[3].Width = 100;
                    lvVisionDB.Columns.Add("Название");
                    lvVisionDB.Columns[4].Width = 80;
                    reader.Close();
 
//------------------------------------------------------------------------------------
                    //отображение в cbSex-------------------------------------------/
                    string queryCbSex = "select humanSex from ObuvnoiSexType";    //
                    SqlCommand cSex = new SqlCommand(queryCbSex, conn);           //
                    DataTable dtSiex = new DataTable();                           //
                    SqlDataAdapter daSex = new SqlDataAdapter(cSex);              //
                    daSex.Fill(dtSiex);                                           //
                    cbSex.DataSource = dtSiex;                                    //
                    cbSex.DisplayMember = "humanSex";// столбец для отображения   //
                    cbSex.ValueMember = "humanSex";
                    cbSex.SelectedIndex = -1;                                     //
                    cbSex.DropDownStyle = ComboBoxStyle.DropDownList;             //
                    //--------------------------------------------------------------//
//------------------------------------------------------------------------------------
 
 
//------------------------------------------------------------------------------------
                    ////отображение в cbSize----------------------------------------//
                    string queryCbSize = "select size from ObuvnoiSyze";            //
                    SqlCommand cSize = new SqlCommand(queryCbSize, conn);           //
                    DataTable dtSize = new DataTable();                             //
                    SqlDataAdapter daSize = new SqlDataAdapter(cSize);              //
                    daSize.Fill(dtSize);                                            //
                    cbSize.DataSource = dtSize;                                     //
                    cbSize.DisplayMember = "size";// столбец для отображения        //
                    cbSize.SelectedIndex = -1;                                      //
                    cbSize.DropDownStyle = ComboBoxStyle.DropDownList;              //
                    //--------------------------------------------------------------//
//------------------------------------------------------------------------------------
 
//------------------------------------------------------------------------------------
                    ////отображение в cbSize----------------------------------------//
                    string queryCbBrandName = "select name from ObuvnoiBrandName";  //
                    SqlCommand cBrand = new SqlCommand(queryCbBrandName, conn);     //
                    DataTable dtBrand = new DataTable();                            //
                    SqlDataAdapter daBrand = new SqlDataAdapter(cBrand);            //
                    daBrand.Fill(dtBrand);                                          //
                    cbBrand.DataSource = dtBrand;                                   //
                    cbBrand.DisplayMember = "name";                                 //
                    cbBrand.SelectedIndex = -1;                                     //
                    cbBrand.DropDownStyle = ComboBoxStyle.DropDownList;             //
                    //--------------------------------------------------------------//
//------------------------------------------------------------------------------------
                   // conn.Close();
                }
                catch (DbException dbEx)
                {
                    MessageBox.Show(dbEx.Message);
                }
            }
            catch (SqlException conectionEx)
            {
                MessageBox.Show(conectionEx.Message);
                conn.Close();
            }
        }
 
        private void btSearch_Click(object sender, EventArgs e)
        {
            //
            int size = cbSize.SelectedIndex;
            //
 
            string woman = "женские";
            string man = "мужские";
            string sex = cbSex.SelectedValue.ToString();
 
            //int[] brandArr =  new [] brandArr; ;
 
            DbCommand command = conn.CreateCommand(); //создаем коммаду на вывод
 
            if (sex.Equals(woman))
            {
                //тут цикл for(int i =1; i<=)
                command.CommandText = @"select do.price, ost.humanSex, os.size, obn.name, oname.modelname FROM DataObuvnoi do, ObuvnoiSexType ost, ObuvnoiSyze os, Obuvnoibrandname obn, Obuvnoiname oname where do.id_sex = ost.id and ost.humansex='"+sex+"' and do.id_size = os.id and do.id_brand = obn.id and do.id_name = oname.id ";
                //                            do.price, ost. - из таблицы обувной sex type                                                                                                                         вот тут нужно забрать id=2
                DbDataReader reader = command.ExecuteReader(); // не помню что делает
                lvVisionDB.Clear();
                while (reader.Read())
                {
                    ListViewItem item = lvVisionDB.Items.Add(new ListViewItem());
                    item.Text = (reader.GetFloat(reader.GetOrdinal("price"))).ToString();
                    item.SubItems.Add(reader.GetString(reader.GetOrdinal("humanSex")));
                    item.SubItems.Add((reader.GetInt32(reader.GetOrdinal("size"))).ToString());
                    item.SubItems.Add(reader.GetString(reader.GetOrdinal("name")));
                    item.SubItems.Add(reader.GetString(reader.GetOrdinal("modelname")));
                }
                lvVisionDB.View = View.Details;
                lvVisionDB.Columns.Add("Цена");
                lvVisionDB.Columns[0].Width = 40;
                lvVisionDB.Columns.Add("Пол");
                lvVisionDB.Columns[1].Width = 60;
                lvVisionDB.Columns.Add("Размер");
                lvVisionDB.Columns[2].Width = 55;
                lvVisionDB.Columns.Add("Производитель");
                lvVisionDB.Columns[3].Width = 100;
                lvVisionDB.Columns.Add("Название");
                lvVisionDB.Columns[4].Width = 80;
                reader.Close();
            }
            else if (sex.Equals(man))
            {
                command.CommandText = @"select do.price, ost.humanSex, os.size, obn.name, oname.modelname FROM DataObuvnoi do, ObuvnoiSexType ost, ObuvnoiSyze os, Obuvnoibrandname obn, Obuvnoiname oname where do.id_sex = ost.id and ost.humansex='" + sex + "' and do.id_size = os.id and do.id_brand = obn.id and do.id_name = oname.id ";
                //                            do.price, ost. - из таблицы обувной sex type                                                                                                                         вот тут нужно забрать id=2
                DbDataReader reader = command.ExecuteReader(); // не помню что делает
                lvVisionDB.Clear();
                while (reader.Read())
                {
                    ListViewItem item = lvVisionDB.Items.Add(new ListViewItem());
                    item.Text = (reader.GetFloat(reader.GetOrdinal("price"))).ToString();
                    item.SubItems.Add(reader.GetString(reader.GetOrdinal("humanSex")));
                    item.SubItems.Add((reader.GetInt32(reader.GetOrdinal("size"))).ToString());
                    item.SubItems.Add(reader.GetString(reader.GetOrdinal("name")));
                    item.SubItems.Add(reader.GetString(reader.GetOrdinal("modelname")));
                }
                lvVisionDB.View = View.Details;
                lvVisionDB.Columns.Add("Цена");
                lvVisionDB.Columns[0].Width = 40;
                lvVisionDB.Columns.Add("Пол");
                lvVisionDB.Columns[1].Width = 60;
                lvVisionDB.Columns.Add("Размер");
                lvVisionDB.Columns[2].Width = 55;
                lvVisionDB.Columns.Add("Производитель");
                lvVisionDB.Columns[3].Width = 100;
                lvVisionDB.Columns.Add("Название");
                lvVisionDB.Columns[4].Width = 80;
                reader.Close();
            }
        }
    }
}
я вытянул через
C#
1
else if (sex.Equals(man))
и тут то ладно у меня 3 разновидности обуви по полу но вот размеров ноги и брендов будет значительно больше.. прописывать это в коде - не логично.
Я так понимаю что нужен массив и цикл
C#
1
for(;;)
который будет подставлять в
MySQL
1
select
запрос элемент выбранный в comboBox - пока что не могу найти решение (( если сталкивались - напишите.
Спасибо ;-)

Добавлено через 24 минуты
Цитата Сообщение от wm_leviathan Посмотреть сообщение
почему ListView
c dataGView работал мало ((( сейчас понимаю, с ним было бы удобнее, но завтра экзамен и разбираться просто нет времени ((( нужно сегодня дописывать проект.

до select index в listWiew еще не дошел(( надеюсь что там проблем не возникнет, но если стопанусь наглухо, то придется перерабатывать под dataGView....
0
 Аватар для wm_leviathan
214 / 214 / 73
Регистрация: 12.01.2011
Сообщений: 767
27.09.2015, 02:25
Baeron, если хочешь программировать нормально то лучше используй функции (методы в в шарпе), к примеру у тебя 3 комбобокса которые ты заполняешь из базы, это одна функция. Ав представь у тебя будет приложение где 10 комбобоксов и куча еще элементов ты просто форму превратишь в помойку, это ужасно на самом деле.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void LoadCombo(string sqlQueryString, ComboBox comboControl, string cbColName)
        {
            using (SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlQueryString, connStr))
            {
                DataTable table = new DataTable();
                table.Locale = System.Globalization.CultureInfo.InvariantCulture;
                dataAdapter.Fill(table);
                comboControl.DataSource = table;
                comboControl.DisplayMember = table.Columns[cbColName].ColumnName;
            }
        }
 
        public void LoadCombo(string sqlQueryString, ComboBox comboControl, string cbColName, string cbID)
        {
            using (SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlQueryString, connStr))
            {
                DataTable table = new DataTable();
                table.Locale = System.Globalization.CultureInfo.InvariantCulture;
                dataAdapter.Fill(table);
                comboControl.DataSource = table;
                comboControl.DisplayMember = table.Columns[cbColName].ColumnName;
                comboControl.ValueMember = table.Columns[cbID].ColumnName;
            }
        }
к примеру эти методы загружают в кб надо только их дергать и все

Добавлено через 58 секунд
сократишь код на 100 строчек точно

Добавлено через 4 минуты
Цитата Сообщение от Baeron Посмотреть сообщение
c dataGView работал мало ((( сейчас понимаю, с ним было бы удобнее,
не просто удобнее, у меня это занимает примерно вот так
C#
1
2
3
4
 private void MainForm_Load(object sender, EventArgs e)
        {
            _bsMain.DataSource = dbRuntime.GetAll();
        }
_bsMain - это биндинг соурс, он привязан к гриду. Это показывает список всех людей в программе (я не в даюсь в подробности) Но считаю к такому идеалу надо стремиться когда у тебя в коде форме действия выполняются в одну строчку.

Добавлено через 2 минуты

Не по теме:

Если есть вопросы пиши в личку, могу помочь

0
4 / 4 / 3
Регистрация: 25.09.2015
Сообщений: 19
27.09.2015, 15:00
если у нас минутка более правильных подходов при работе с субд и используем старый добрый ado.net без каких либо orm, то хотелось бы добавить к правильным замечаниям предыдущего оратора.

Любой экземпляр класса, реализующий IDisposable следует засовывать в using.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static IEnumerable<SampleTable> SelectSampleTable(SqlConnection pConnection)
        {
            var vResult = new List<SampleTable>();
            using (var dt = new DataTable())
            using (var comm = new SqlCommand{
                CommandText = Queries.SelectSampleTable,
                Connection = pConnection})
            {
                //вот тут очень удобно было бы вставить строчку логирования команды
                dt.Load(comm.ExecuteReader());
                vResult.AddRange(Enumerable.Select(dt.AsEnumerable(), dataRow => new SampleTable(dataRow)));
            }
            return vResult;
        }
Все тексты запросов отнесены в класс Queries. Когда все sql-запросы собраны в одном месте есть шанс заметить, что подобный запрос у тебя уже где-то был использован, а значит легче пересмотреть уже существующий функционал нежели рисовать новый.
SampleTable - это класс, который соответствует структуре таблицы. приятнее работать с экземплярами класса (это чуть более затратно), внутри типизированные данные. В классе есть конструктор, который собирает экземпляр класса из DataRow
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class SampleTable
    {
        public long Id { get; set; }
        public string Text { get; set; }
 
        public SampleTable()
        {
        }
 
        public SampleTable(DataRow pRow)
        {
            Id = pRow.Field<long>("ID");
            Text = pRow.Field<string>("Text");
        }
    }
В конструкторе класса вытянули по названием полей запроса данные в соответствующие свойства класса. Есть ещё люди которые с полями работают по индексу поля - это неудачный подход. например, вы вытягиваете набор полей из представления (view). в в процессе эволюции возникла потребность представление модифицировать - порядок полей изменился. если вы тянули данные в стиле
T-SQL
1
select * from view
, то во тут вы немного взгрустнёте.
Если используете несколько СУБД то конструктору имеет смысл передавать тип СУБД и от него уже ветвить разбор результатов запроса.

а дальше результат метода SelectSampleTable передаётся на форму в качестве dataSource. в момент, когда пользователь покликал в SelectedValue вы получаете готовый экземпляр класса, который на который кликнул пользователь.
Тут это между строк написано, но пропишу явно: на форме дёргается один метод для получения набора данных (заворачивать результаты в набор экземпляров класса не обязательно, но мне так приятнее работать), результат указывается как dataSource (это всё одна строка), пара-тройка строк на украшения внешнего вида и всё.

Не должна форма уметь хоть что-то связанное с СУБД. это необоснованное дублирование кода. всё, что связано с СУБД должен уметь только один класс (назовём его Db), являющийся точкой входа для всех (классы типа helper в том числе. они должны дёргать класс Db и работать с его результатами).

Например, вы решили расширить стандартный комбобокс привязкой к вашей субд. научили его подключаться к базе, запрашивать информацию... помимо этого комбобокса у вас есть ещё куча кусков кода, которые тоже умеют работать с СУБД. и тут вы по логам (а ещё лучше по профайлеру) замечаете что один запрос настолько косячный, что вешает вам базу....) полнотекстовый поиск по проекту вам в помощь)))
Когда точка входа одна и вы уверены что никуда больше не всовывали работу с субд, ваша задача - отсмотреть один класс (конечное время).
Да и когда ваш комбобокс наполняется данными конкретного метода класса Db... вы подуспокоитесь, перестанете усложнять себе жизнь и откажетесь от наследования в пользу использования стандартного класса с правильной инициализацией.
1
2 / 2 / 1
Регистрация: 22.09.2014
Сообщений: 132
29.09.2015, 21:38  [ТС]
Цитата Сообщение от KonstantinL2015 Посмотреть сообщение
приятнее работать
спасибо вам за разъяснения. и потраченное время на это. Думаю мне поможет только мастер-класс))) и несколько "живых" примеров. постараюсь понять то что вы описали. как только будет минутка.
На СЕЙЧАС сложность с отсоединенным режимом(((
И все же премного благодарен за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.09.2015, 21:38
Помогаю со студенческими работами здесь

Сортировка в listView
Здравствуйте , я имею вот такую часть кода : private void button3_Click(object sender, EventArgs e) { ...

Сортировка в ListView
Уважаемое сообщество!!! Имею необходимость сортировки данных в ListView, но не имею навыков. Помогите, пжлст, хотя бы для элементарного...

Сортировка в listview
Здравствуйте, планирую разобраться с сортировкой элементов списка. Сортировка будет по идентификатору или имени каждого элемента списка. В...

Сортировка listview
При нажатии на заголовок определенной ячейки listview произвести сортировку от А до Я, а при повторном нажатии от Я до А. То есть мне...

Сортировка в ListView
Здравствуйте! Я решил написать класс интерфейса IComparer для того, чтобы сортировать элементы ListView по выбранному столбцу и с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru