Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 10
1

Изменение типа столбца DataGridView после его заполнения из бд

13.08.2013, 21:10. Просмотров 2430. Ответов 4
Метки нет (Все метки)

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

C#
1
2
3
4
5
6
...
CompDataAdapter = new MySqlDataAdapter("SELECT * FROM компании", Connect);
DataSet CompDS = new DataSet();
CompDataAdapter.Fill(CompDS);
CompDataGridView.DataSource = CompDS.Tables[0];
...
Вопрос в том - как изменить тип некоторых столбцов с того что создается по умолчанию на ComboBoxColumn и присвоить какие то значения свойству Items? Ведь при создании программы столбца как бы нет, он появляется в процессе заполнения DataGridView.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.08.2013, 21:10
Ответы с готовыми решениями:

Поменять тип столбца datagridview после заполнения данными
Я автоматически заполняю datagridview из SQL запроса, но проблема в том, что все они создаются...

Изменение типа конкретного столбца dataGridView
Здравствуйте! Уточню сабж: вывожу данные из MSSQL таким нехитрым способом: DataTable dt = new...

Программное изменение типа столбца в DataGridView
Подскажите пожалуйста как мне в программе (не в дизайнере) поменять тип столбца, необходимо...

Создать массив типа int на 10 элементов и заполнить его случайными числами от 7 до 14. После заполнения перезаписать все
Создать массив типа int на 10 элементов и заполнить его случайными числами от 7 до 14. После...

4
)))
609 / 389 / 55
Регистрация: 31.12.2009
Сообщений: 2,318
Записей в блоге: 3
16.08.2013, 11:07 2
На днях задавал такой же вопрос, но с ответами ещё не разобрался: Заполнить значением DataGridViewComboBoxColumn

Если получиться, выложи код, плиз...
0
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 10
16.08.2013, 12:20  [ТС] 3
У меня немного по другому, у меня во время создания программы столбцов как бы нет, они создаются после выполнения запроса к MySQL, то есть уже после запуска программы и я не знаю как изменить сам тип столбца.
0
1454 / 1027 / 142
Регистрация: 23.07.2010
Сообщений: 5,688
21.08.2013, 11:20 4
Создавай столбцы динамически.
Кликните здесь для просмотра всего текста

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 <Frame>
      <column name="name" IsPK="false" Mark="false">
        <Appearance Description="" HeaderText="Материал" ToolTip="" Visible="true"/>
        <Data DataPropName="child" DataSource="materials" DisplayMember="name" ValueMember="material"/>
        <Behavior ReadOnly="false" Length="5" Null="true"/>
        <Project Columntype="ComboBox"/>
        <Choose id=""/>
      </column>
 
      <column name="id" IsPK="true" Mark="false">
        <Appearance Description="" HeaderText="" ToolTip="" Visible="false"/>
        <Data DataPropName="id"/>
        <Behavior ReadOnly="true" Length="1" Null="true"/>
        <Project Columntype="TextBox"/>
        <Choose id=""/>
      </column>
</Frame>

Кликните здесь для просмотра всего текста

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
   foreach (XElement xxx in xe.Element("Frame").Elements())
                {
 
                    ///
                    /// Common properties
                    /// 
 
                    ///
                    /// Appearance
                    /// 
                    XElement temp = xxx.Element("Appearance");
                    string name = xxx.Attribute("name").Value.ToString(); ;
                    bool vis = GetValue(temp.Attribute("Visible").Value.ToString());
                    if (!vis) Hiddens++;
                    string HeaderText = temp.Attribute("HeaderText").Value.ToString();
                    string Description = temp.Attribute("Description").Value.ToString();
                    string ToolTip = temp.Attribute("ToolTip").Value.ToString();
                    temp = xxx.Element("Behavior");
                    bool RO = GetValue(temp.Attribute("ReadOnly").Value.ToString());
                    int Length = int.Parse(temp.Attribute("Length").Value);
                    DataGridViewCellStyle dataGridViewCellStyle = new DataGridViewCellStyle();
                    dataGridViewCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
                    dataGridViewCellStyle.BackColor = System.Drawing.SystemColors.Window;
                    dataGridViewCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
                    dataGridViewCellStyle.ForeColor = System.Drawing.SystemColors.ControlText;
                    dataGridViewCellStyle.SelectionBackColor = System.Drawing.SystemColors.GradientActiveCaption;
                    dataGridViewCellStyle.SelectionForeColor = System.Drawing.SystemColors.InfoText;
                    dataGridViewCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
                    
 
                    ///
                    /// Data
                    /// 
                    temp = xxx.Element("Data");
                    string DataPropName = temp.Attribute("DataPropName").Value.ToString();
                    ///
                    /// Columns preparing
                    /// 
                    switch (xxx.Element("Project").Attribute("Columntype").Value.ToString())
                    {
                        case "TextBox":
                            DataGridViewTextBoxColumn tb = new DataGridViewTextBoxColumn();
                            tb.Name = name;
                            tb.Visible = vis;
                            if (Visible)
                            {
                                tb.Resizable = DataGridViewTriState.True;
                                tb.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                            }
                            tb.HeaderText = HeaderText;
                            tb.ToolTipText = ToolTip;
                            tb.DataPropertyName = DataPropName;
                            tb.ReadOnly = RO;
                            if(Length>0)
                                tb.MaxInputLength = Length;
                            tb.Tag = 1; // column type
                            //tb.SortMode = DataGridViewColumnSortMode.Programmatic;
                            tb.DefaultCellStyle = dataGridViewCellStyle;
                            
                            this.Columns.Add(tb);
                            break;
                        case "ComboBox":
                            DataGridViewComboBoxColumn cb = new DataGridViewComboBoxColumn();
                            cb.Name = name;
                            cb.Visible = vis;
                            if (Visible)
                            {
                                cb.Resizable = DataGridViewTriState.True;
                                cb.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                            }
                            cb.HeaderText = HeaderText;
                            cb.ToolTipText = ToolTip;
                            cb.DataPropertyName = DataPropName;
                            cb.DisplayMember = temp.Attribute("DisplayMember").Value.ToString();
                            cb.ValueMember = temp.Attribute("ValueMember").Value.ToString();
                            cb.DataSource = FillDS(temp.Attribute("DataSource").Value.ToString());
                            cb.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
                            cb.Tag = 2;
                            cb.ReadOnly = RO;
                            cb.DefaultCellStyle = dataGridViewCellStyle;
 
                            //cb.SortMode = DataGridViewColumnSortMode.Programmatic;
                            this.Columns.Add(cb);
                            break;
0
1049 / 856 / 195
Регистрация: 31.03.2010
Сообщений: 2,516
21.08.2013, 12:53 5
reZed, а вы зайдите в конструктор и создайте! библиотека .Net многое автоматизирует, но не всесильна. потому создать столбец нужного типа не может. и изменить тип столбца после его создания так же невозможно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2013, 12:53

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

Пропадает значение в первой ячейке DataGridView после заполнения
Доброго времени суток! Я столкнулся с проблемой в заполнении DataGridView. Таблица выглядет таким...

DataGridView изменение столбца
Привет всем. Нужна помощь с DataGridView. В программе реализована загрузка базы в таблицу(код взял...

Изменение цвета фона тега input после заполнения
Подскажите, как изменить фон тега input, после его заполнения.

Изменение типа dataGridView
У меня в dataGridView автоматические добавлялись значения из БД. Мне нужно переприсвоить ячейки,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.