Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
1

Нумерация строк в DataGridView

22.01.2018, 08:33. Показов 4294. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! подскажите как сделать, чтобы при скрытии строк нумерация шла попорядку??? в моем случае идет так
1,2 строка потом идет скрытие строки далее 4,5,6 скрытие и 8 и т.д. Как сделать чтобы шло попарядку??. Вот мой код:
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
public Phone_VGSCH_Admin()
        {
            InitializeComponent();
          
            dalAdmin.FillDataGridViewAdmin(dgw_Phone_Admin); //происходит заполение датагрида
           
       
          
 
        }
 private void Phone_VGSCH_Admin_Load(object sender, EventArgs e)
        {
          
            dgw_Phone_Admin.RowPrePaint += dgw_Phone_Admin_RowPrePaint;
 
        }
 
     
        private void dgw_Phone_Admin_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
        {
         
            for (int i = 0; i < dgw_Phone_Admin.RowCount; i++)
            {
                if (dgw_Phone_Admin.Rows[i].Cells[2].FormattedValue.ToString() == "Гараж")
                {
                    dgw_Phone_Admin.Rows[i].Visible = false;
                  
                }
                else
                {
                    //if (dgw_Phone_Admin.Rows[i].Cells[2].FormattedValue.ToString() == "САБ")
                    //{
                    //    object head = this.dgw_Phone_Admin.Rows[e.RowIndex].HeaderCell.Value;
                    //    if (head == null ||
                    //        !head.Equals((e.RowIndex + 1).ToString()))
                    //        this.dgw_Phone_Admin.Rows[e.RowIndex].HeaderCell.Value =
                    //            (e.RowIndex + 1).ToString();
                    //}
                }
              
            }
            if (dgw_Phone_Admin.Rows[0].Visible == true)
            {
 
                object head = this.dgw_Phone_Admin.Rows[e.RowIndex].HeaderCell.Value;
                if (head == null ||
                    !head.Equals((e.RowIndex + 1).ToString()))
                    this.dgw_Phone_Admin.Rows[e.RowIndex].HeaderCell.Value =
                        (e.RowIndex + 1).ToString();
 
            }
 
 
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2018, 08:33
Ответы с готовыми решениями:

Нумерация строк в DataGridView
Как пронумировать строки в гриде (как в екселе)?

Нумерация строк в DataGridView
Как сделать, чтобы в 1 столбце DataGridView номер строки таблицы? Спасибо Добавлено через 1 час...

DataGridView, нумерация строк в отдельном столбце
Здравствуйте, столкнулся с такой проблемой. Есть таблица, в которую данные загружаются из...

Нумерация отдельного столбца datagridview
Здравствуйте. Как пронумеровать отдельный столбец datagridview?

11
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
22.01.2018, 10:04 2
Не очень так затея скрывать строки. Делайте фильтр по DataTable - это и быстрее и легче потом, не запутаетесь в индексах.
Также нужно понять - что означают номера строк - это уходит в БД или же сугубо для UI, для красоты пользователю.
Если сугубо для красоты - то можно воспользоваться событиями самого грида, например
C#
1
2
3
4
5
private void dgvTest_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex == 0)
                e.Value = (e.RowIndex + 1).ToString();
        }
Тогда каждый раз при добавлении/удалении строки - будет автоматически заполняться 1-я колонка индексом.
0
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
22.01.2018, 10:28  [ТС] 3
hoolygan, у меня данные берутся из Datasource вот код:
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
  public BindingSource FillDataGridViewAdmin(DataGridView dgv_MF)
        {
            using (connect = new OdbcConnection(connection))
            {
 
                query = "select phone_vgsch.fio,dolzhnost.dolzhnost,location.loc,mobile_phone.mob_phone, tariff_plan.tar_plan from phone_vgsch,dolzhnost,location, mobile_phone,tariff_plan where phone_vgsch.FK_DOLZHNOST = DOLZHNOST.ID_DOLZHNOST and phone_vgsch.fk_location = location.id_location and phone_vgsch.fk_mobile_phone = mobile_phone.id_mobile_phone and phone_vgsch.fk_tariff_plan = tariff_plan.id_tariff_plan" /*and phone_vgsch.FK_LOCATION = LOCATION.ID_LOCATION   personel.fk_position = posit.id_posit and personel.fk_tag = tags.id_zavandtag"*/;
                cmd = new OdbcCommand(query, connect);
                try
                {
                    // connect.Open();
                    dataadapter = new OdbcDataAdapter();
                    dataadapter.SelectCommand = cmd;
                    ds1 = new DataTable();
                    dataadapter.Fill(ds1);
                    bs = new BindingSource();
                    bs.DataSource = ds1;
                    if (dgv_MF.InvokeRequired)
                    {
                        // dgv_MF.DataSource = bs;
                        dgv_MF.Invoke(new Action<DataGridView>(DataGrid => DataGrid.DataSource = bs), dgv_MF);
                        dgv_MF.Invoke(new Action<DataGridView>(DataGrid => DataGrid.Sort(dgv_MF.Columns[0], ListSortDirection.Ascending)), dgv_MF);
 
                    }
                    else
                        dgv_MF.DataSource = bs;
                    dataadapter.Update(ds1);
 
                     connect.Close();
 
                }
                catch (OdbcException e)
                {
                    MessageBox.Show("Невозможно подключится к базе данных" + e.Message, "БД FLEXCOM", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            return bs;
 
        }
попробывал вашим кодом всеравно также да и мне нужен индекс -1
0
154 / 144 / 33
Регистрация: 05.03.2013
Сообщений: 789
22.01.2018, 11:20 4
Нужно просто делать сортировку данных по номеру строки и будет все по порядку.
0
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
22.01.2018, 12:15  [ТС] 5
Цитата Сообщение от Козадоев Посмотреть сообщение
Нужно просто делать сортировку данных по номеру строки и будет все по порядку.
как тогда сделать сортировку на -1 строке вот так неполучилось
C#
1
dgw_Phone_Admin.Sort(dgw_Phone_Admin.Columns[-1], ListSortDirection.Ascending);
0
154 / 144 / 33
Регистрация: 05.03.2013
Сообщений: 789
22.01.2018, 12:27 6
Цитата Сообщение от Keysi Посмотреть сообщение
как тогда сделать сортировку на -1 строке вот так неполучилось
Сортировка источника может быть сделана например так

C#
1
2
3
4
5
 DataView view1 = DataSet1.Table1.DefaultView;
 BindingSource source1 = new BindingSource();
 source1.DataSource = view1;
datagridview1.DataSource = source1;
source1.Sort = "NumColunm";
где NumColunm - колонка типа int;
1
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
22.01.2018, 12:38 7
Keysi, Если у Вас нумерация строк - величина, приходящая из БД - да и сама колонка скрыта от пользователей - тогда понять не могу причину этого. Ведь сама колонка отсротирована по номеру, просто скрыты строки. Я же думал, что нужно именно пользователю отобразить номера строчек, как ексель, например, отображает номера строк, но они ни к чему не привязаны.
0
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
22.01.2018, 12:40  [ТС] 8
Цитата Сообщение от Козадоев Посмотреть сообщение
Сортировка источника может быть сделана например так
интересно и как же название колонки с индексом -1?
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
22.01.2018, 18:14 9
Keysi, источник - это не грид. У источника (DataTable входящий в объект DataSet, которое Вы заполняете методом Fill() у dataadapter) - нет колонки с индексом "-1". нумерация колонок начинается с "0". Желательно Вам разобраться со своим кодом, потому что пока что Вы плаваете в нем.
1
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
23.01.2018, 05:03  [ТС] 10
Цитата Сообщение от hoolygan Посмотреть сообщение
Keysi, источник - это не грид. У источника (DataTable входящий в объект DataSet, которое Вы заполняете методом Fill() у dataadapter) - нет колонки с индексом "-1". нумерация колонок начинается с "0". Желательно Вам разобраться со своим кодом, потому что пока что Вы плаваете в нем.
Как нету 0- это колонка ФИО , значит -1 рисунок в приложении после скрытия строк у меня вот что получается:
Нумерация строк в DataGridView
0
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
23.01.2018, 05:24 11
Цитата Сообщение от Keysi Посмотреть сообщение
Как нету
Так это не колонка, а Column/Row Header...
1
3 / 4 / 2
Регистрация: 05.04.2011
Сообщений: 179
23.01.2018, 07:07  [ТС] 12
Цитата Сообщение от Someone007 Посмотреть сообщение
Так это не колонка, а Column/Row Header...
вот как она по нормальному называется чтобы по ней доступится или сделать по ней сортировку?

Добавлено через 25 минут
Короче всем спасибо кого помучил. Оказывается после сортировки невидимые строки появляются. Было принято решение удалять их тогда и нумерация встает нормально в Column/Row Header
C#
1
2
3
4
5
6
7
8
9
  for (int i = 0; i < dgw_Phone_Admin.RowCount; i++)
            {
                if (dgw_Phone_Admin.Rows[i].Cells[2].FormattedValue.ToString() == "Гараж")
                {
                    dgw_Phone_Admin.Rows.RemoveAt(i);
 
                }
 
            }
0
23.01.2018, 07:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2018, 07:07
Помогаю со студенческими работами здесь

Автоматическая нумерация заголовков столбцов в DataGridView
Нужна помощь. Есть одна форма, в которой вводится информация (допустим некое количество столбцов),...

Нумерация строк в RichTextBox
Я занимаюсь кодингом на c# не так давно, столкнулся с проблемой, не знаю как сделать нумерацию...

Нумерация строк в RichTextBox'e
Здравствуйте. Вот есть скриншот программы. В нём показана работа программы, лексический анализатор....

Нумерация строк в RichTextBox
Здравствуйте. Не могли бы подсказать как можно реализовать нумерацию строк в richtextbox. Нашёл в...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru