Arvind61 Ответов: 0

Как добавить новую строку в datagridview без удаления информации из предыдущих строк


Привет, мне было трудно найти решение этой проблемы. Я надеюсь найти здесь решение.
У меня есть datagridview с первыми тремя столбцами в виде текстового поля и остальными двумя столбцами в виде столбцов combobox.Когда я добавляю новую строку в этот datagridview во время выполнения, значения в предыдущих строках текстового поля исчезают, в то время как comboboxes остаются такими же, как и в предыдущих строках.
Пожалуйста, посоветуйте, как сохранить значения предыдущих столбцов текстового поля. Я построил этот составного элемента управления datagridview без привязки к данным или поддающаяся датировке.Вместо этого я построил datagridview ячейку за ячейкой и столбцы datagridview. Возможное решение было бы высоко оценено. Я предоставлю любую другую информацию со своей стороны, если потребуется.

Что я уже пробовал:

Обыскал весь интернет.Я обыскал все книги, но ничего не нашел.

Matias Lopez

Если переписать всю строку, то последняя строка исчезла? Расскажите подробнее об этой ошибке! Например, определение DataGridView.

Arvind61

Я создал функцию, которая добавляет новую строку при вызове.Поэтому всякий раз, когда я вызываю эту функцию AddNewRow (), она добавляет одну строку.Строка не исчезает, только записи в текстовых полях (а не комбо) в "предыдущих" строках исчезают(не текущая строка). Комбо остаются прежними.

Matias Lopez

- Я создал функцию, которая добавляет новую строку при вызове."
Где вы вызвали эту функцию (кнопка, функция дескриптора формы Windows, делегат)? Есть ли у вас функция очистки (и при вызове, может быть, очистить texBox)?
Если вы покажете код, мы сможем помочь вам лучше!

Arvind61

если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Richard MacCutchan

Вам нужно показать код, который делает вставку. Мы не можем догадаться, как эти текстовые поля очищаются.

Arvind61

Пожалуйста, найдите код ниже.
Private Sub showNormalRow(ByVal classRowId As Integer, ByVal sectionRowId As Integer)
Статическое intRowNo как целое число = 0
dscomb.Таблицы(0).строки.добавить(dsDataDsCombined.Таблицы(0).Строки(0).Элемент(0), _
dsDataDsCombined.Таблицы(0).строки(0).Элемент(1), strClassTeacherSelected)
Если intRowNo > 0, то
dgvRecords.Строк.Добавить()
Конец, Если
'Dim colClassName как новый столбец DataGridViewTextBoxColumn
colClassName.Name = "Имя Класса"
colClassName.HeaderText = "Имя Класса"
colClassName.Толькочтение = Истина
colClassName.SortMode = DataGridViewColumnSortMode.NotSortable
Dim colClassNameCell как новый DataGridViewTextBoxCell
colClassNameCell.Value = dsCombined.Таблицы(0).Строки(0)(0)
colClassName.CellTemplate = colClassNameCell
Статический booFirstTimeClass как Boolean = True
Если booFirstTimeClass то
dgvRecords.Столбцы.Добавить(colClassName)
booFirstTimeClass = False
Конец, Если
dgvRecords(0, intRowNo).Значение = dsCombined.Таблицы(0).строки(intRowNo)(0)
'Дим colSectionName как новый вариант datagridviewtextboxcolumn
colSectionName.Имя = "Section_Name"
colSectionName.HeaderText = "Название Раздела"
colSectionName.Толькочтение = Истина
colSectionName.SortMode = DataGridViewColumnSortMode.NotSortable
Static booFirstTimeSection As Boolean = True
Если booFirstTimeSection то
dgvRecords.Столбцы.Добавить(colSectionName)
booFirstTimeSection = False
Конец, Если
dgvRecords(1, intRowNo).Значение = dsCombined.Таблицы(0).строки(intRowNo)(1)
'Дим colcmbClassTeacher как новый вариант datagridviewtextboxcolumn
colcmbClassTeacher.HeaderText = "Классный Руководитель"
colcmbClassTeacher.Толькочтение = Истина
colcmbClassTeacher.SortMode = DataGridViewColumnSortMode.NotSortable
Статический booFirstTimeClassTeacher как Boolean = True
Если booFirstTimeClassTeacher то
dgvRecords.Столбцы.Добавить(colcmbClassTeacher)
booFirstTimeClassTeacher = False
Конец, Если
dgvRecords(2, intRowNo).Значение = dsCombined.Таблицы(0).Строки(0)(2)
Dim objclsConnection как clsConnection
Dim strSql как строка
Dim intNoOfOtionalSubjs как целое число
Статический объект dsComboBoxSubject в виде набора данных
Статический dsComboBoxSubjectForOptionalSubjts в качестве набора данных
Static booEnteredFirstTime As Boolean = True
Если booEnteredFirstTime то
dsComboBoxSubjectForOptionalSubjts = новый набор данных()
dsComboBoxSubjectForOptionalSubjts.Четкий()
strSql = generateSqlForOptionalSubjsForThisclasssec(classRowId, sectionRowId)
objclsConnection = New clsConnection(strSql, "select", "Tbl_Eliminated_Subj")
dsComboBoxSubjectForOptionalSubjts = objclsConnection.readyDataSet()
intNoOfOtionalSubjs = dsComboBoxSubjectForOptionalSubjts.Таблицы(0).Строки.Рассчитывать
dsComboBoxSubject = новый набор данных()
dsComboBoxSubject.Четкий()
strSql = "select SubjectID, Subject_Name from Tbl_Subject order by SubjectID"
objclsConnection = New clsConnection(strSql, "select", "Tbl_Subject")
dsComboBoxSubject = objclsConnection.readyDataSet()
booEnteredFirstTime = False
Конец, Если
intNoOfOtionalSubjs -= 1
'Dim colcmbSubject As New DataGridViewComboBoxColumn
colcmbSubject.Имя = "Subject_Name"
colcmbSubject.HeaderText = "Тема"
colcmbSubject.SortMode = DataGridViewColumnSortMode.NotSortable
Dim colcmbSubjectCell как новый DataGridViewComboBoxCell
Если intNoOfOtionalSubjs >= 0, то
colcmbSubjectCell.Источник данных = dsComboBoxSubjectForOptionalSubjts.Таблицы(0)
Еще
colcmbSubjectCell.Источник данных = dsComboBoxSubject.Таблицы(0)
Конец, Если
colcmbSubjectCell.ValueMember = "SubjectID"
colcmbSubjectCell.DisplayMember = "Subject_Name"
colcmbSubject.CellTem

Richard Deeming

Не пытайтесь разместить код в комментарии - Нажмите зеленую ссылку "улучшить вопрос" и добавьте код к вопросу.

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

Если вы не получаете всплывающее сообщение и не видите кнопку на панели инструментов, вам нужно будет ввести <pre> перед кодовым блоком, и </pre> после него.

0 Ответов