我正在使用数据库,我的添加表单和编辑表单存在两个问题。
我的第一个问题是我的添加表单。我不断收到错误
从“ DataRowView”类型到“字符串”类型的转换无效
我一直在粗体显示错误消息。这是我的添加形式下的代码:
Public Class Add_New_University
Public Property universityid As Integer
Private myuniversities As New University
Private Sub Add_New_University_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' TODO: This line of code loads data into the '_UniversityCourses_MDFDataSet.University' table. You can move, or remove it, as needed.
Me.UniversityTableAdapter.Fill(Me._UniversityCourses_MDFDataSet.University)
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
'NOTE: Exception thrown on this line.
If myuniversities.Insert((txtuniversity.Text), CStr(cbo1.SelectedValue), CStr(cbo2.SelectedValue), (txttuition.Text)) Then
Me.Close()
Else
MessageBox.Show("Cannot update the University table.")
End If
End Sub
' closes the form
Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
Me.Close()
End Sub
End Class
我的第二个问题是在编辑表单中:我写了一个try catch,它应该将输入的信息更新到dgv中,否则会引发错误
无法更新大学表。
我不断收到其他消息,并且没有添加任何内容到dgv中。
这是我的编辑表单代码:
Public Class EditUniversity
Public Property UniversityId As Integer
Private myuniversities As New University
Private Sub EditUniversity_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' TODO: This line of code loads data into the '_UniversityCourses_MDFDataSet.University' table. You can move, or remove it, as needed.
Me.UniversityTableAdapter.Fill(Me._UniversityCourses_MDFDataSet.University)
End Sub
' Save Button
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Validate input
If txtuniversity.Text = "" Or IsNumeric(txtuniversity.Text) = True Then
MessageBox.Show("Please enter a valid university name.")
txtuniversity.Clear()
txtuniversity.Focus()
ElseIf txttuition.Text = "" Or IsNumeric(txttuition.Text) = False Then
MessageBox.Show("Please enter a valid amount.")
txttuition.Clear()
txttuition.Focus()
End If
Try
myuniversities.Update(UniversityId, CStr(txtuniversity.Text), CStr(cbo1.SelectedItem), CStr(cbo2.SelectedItem), CDec(txttuition.Text))
Me.Close()
Catch ex As Exception
MessageBox.Show("Cannot update the University table.")
End Try
End Sub
'Close Button
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Me.Close()
End Sub
End Class
如果有人可以帮助我了解我在做什么错,将不胜感激。谢谢!
答案 0 :(得分:0)
鉴于与该问题的标题相关的问题,我将解决第一个问题,而忽略第二个问题,该问题应移至具有适当标题的另一个线程中。
SelectedValue
属性返回与SelectedItem
属性相同的事实表明您尚未设置ValueMember
属性。就像DisplayMember
指定绑定的DataColumn
的{{1}}一样,应该从中提取数据以显示在控件中,因此DataTable
指定ValueMember
数据应该通过DataColumn
从中公开。
也就是说,如果您只想在控件中显示文本,则可以使用SelectedValue
属性。不过,通常情况下,您会显示一个用户友好的列,例如名称或说明,然后通过Text
访问相应的主键值。