0

这是我第一次使用绑定导航器,我不知道如何让它正常工作。在我所做的所有示例中,大多数按钮都没有显示代码,它们可以正常工作。在我的情况下,它们几乎都是灰色的。任何帮助我指出正确方向的帮助表示赞赏。谢谢。

Option Explicit On
Option Strict On
Option Infer Off

Public Class frmMain

    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'TripsDataSet.tblTrips' table. You can move, or remove it, as needed.
        Me.TblTripsTableAdapter.Fill(Me.TripsDataSet.tblTrips)
    End Sub

    Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
        Me.Close()
    End Sub

    Private Sub btnAll_Click(sender As Object, e As EventArgs) Handles btnAll.Click
        'displays all trips
        Me.TblTripsTableAdapter.Fill(Me.TripsDataSet.tblTrips)
        TblTripsDataGridView.DataSource = TripsDataSet.tblTrips
    End Sub


    Private Sub btnCount_Click(sender As Object, e As EventArgs) Handles btnCount.Click
        'displays either business trips or pleasure trips
        Dim foundRows() As TripsDataSet.tblTripsRow
        Dim businesspleasure As String = ""
        If radBusiness.Checked Then
            businesspleasure = "B"
        ElseIf radPleasure.Checked Then
            businesspleasure = "P"
        End If

        foundRows = CType(Me.TripsDataSet.tblTrips.Select("BusinessPleasure = '" & businesspleasure & "'"), Trips_Project.TripsDataSet.tblTripsRow())

        Dim ds As New TripsDataSet.tblTripsDataTable
        For Each row As DataRow In foundRows
            ds.ImportRow(row)
        Next
        TblTripsDataGridView.DataSource = ds

        MessageBox.Show("Trips:  " & TblTripsDataGridView.RowCount - 1)
    End Sub

    Private Sub btnTrips_Click(sender As Object, e As EventArgs) Handles btnTrips.Click
        Dim foundTrips() As TripsDataSet.tblTripsRow
        Dim originTrip As String
        Dim destinTrip As String

        If radOrAtl.Checked Then
            originTrip = "Atlanta"
        ElseIf radOrChi.Checked Then
            originTrip = "Chicago"
        ElseIf radOrLa.Checked Then
            originTrip = "Los Angeles"
        Else
            originTrip = "Nashville"
        End If

        If radDestAtl.Checked Then
            destinTrip = "Atlanta"
        ElseIf radDestChi.Checked Then
            destinTrip = "Chicago"
        ElseIf radDestLa.Checked Then
            destinTrip = "Los Angeles"
        Else
            destinTrip = "Nashville"
        End If
        foundTrips = CType(Me.TripsDataSet.tblTrips.Select(String.Format("Origin = '{0}' AND Destination = '{1}'", originTrip, destinTrip)), Trips_Project.TripsDataSet.tblTripsRow())

        Dim ds As New TripsDataSet.tblTripsDataTable
        For Each row As DataRow In foundTrips
            ds.ImportRow(row)
        Next

        TblTripsDataGridView.DataSource = ds

        MessageBox.Show("Total Trips:  " & TblTripsDataGridView.RowCount - 1)
    End Sub

    Private Sub BindingNavigatorSaveData_Click(sender As Object, e As EventArgs) Handles BindingNavigatorSaveData.Click
        Try
            Me.Validate()
            Me.TblTripsBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.TripsDataSet)
            MessageBox.Show("Updates saved", "My Trips", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ex As Exception
            MessageBox.Show(ex.Message, "My Trips", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Try
    End Sub

    Private Sub BindingNavigatorAddNewItem_Click(sender As Object, e As EventArgs) Handles BindingNavigatorAddNewItem.Click
        Try
            TblTripsBindingSource.AddNew()
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub

    Private Sub BindingNavigatorDeleteItem_Click(sender As Object, e As EventArgs) Handles BindingNavigatorDeleteItem.Click
        Me.BindingNavigator1.BindingSource.RemoveCurrent()
        Try
            Me.Validate()
            Me.TblTripsBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.TripsDataSet)
            MessageBox.Show("Update Successful")
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub
End Class
4

1 回答 1

4

BindingNavigator 基本上是 BindingSource 的 UI。BindingNavigator 上的默认项分别映射到关联 BindingSource 的 MoveFirst 方法、MovePrevious 方法、Position 属性、Count 属性、MoveNext 方法、MoveLast 方法、AddNew 方法和 RemoveCurrent 方法。如果您尚未将 BindingSource 对象分配给 BindingNavigator 的 BindingSource 属性,则这些项目将显示为灰色。

请注意,在 btnAll 按钮的 Click 事件处理程序中,您将 DataTable 直接绑定到 DataGridView。这使您的 BindingNavigator 无用。您需要将 DataTable 绑定到 BindingSource 并将 BindingSource 绑定到 DataGridView。BindingNavigator 的项目然后操作 BindingSource 并因此影响 BindingSource 绑定到的任何东西,即 DataGridView。如果 BindingSource 未绑定到 DataGridView,则 BindingNavigator 不会对 DataGridView 产生任何影响。

于 2014-12-12T01:27:46.593 回答