从“ datarowview”类型到“ string”类型的转换对于组合框无效

时间:2018-07-02 03:47:13

标签: sql vb.net

我正在使用数据库,我的添加表单和编辑表单存在两个问题。

我的第一个问题是我的添加表单。我不断收到错误

  

从“ 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

如果有人可以帮助我了解我在做什么错,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

鉴于与该问题的标题相关的问题,我将解决第一个问题,而忽略第二个问题,该问题应移至具有适当标题的另一个线程中。

SelectedValue属性返回与SelectedItem属性相同的事实表明您尚未设置ValueMember属性。就像DisplayMember指定绑定的DataColumn的{​​{1}}一样,应该从中提取数据以显示在控件中,因此DataTable指定ValueMember数据应该通过DataColumn从中公开。

也就是说,如果您只想在控件中显示文本,则可以使用SelectedValue属性。不过,通常情况下,您会显示一个用户友好的列,例如名称或说明,然后通过Text访问相应的主键值。