Кодирование кнопок Binding Navigator
Это первый раз, когда я работаю с навигатором привязки, и я не могу понять, как заставить его работать должным образом. Во всех примерах, которые я сделал, для большинства кнопок не отображается код, и они просто работают. У меня они почти все серые. Любая помощь, чтобы указать мне в правильном направлении, ценится. Благодарю.
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
1 ответ
BindingNavigator - это в основном пользовательский интерфейс для BindingSource. Элементы по умолчанию в BindingNavigator отображаются на метод MoveFirst, метод MovePrevious, свойство Position, свойство Count, метод MoveNext, метод MoveLast, метод AddNew и RemoveCurrent связанного BindingSource соответственно. Если вы не назначили объект BindingSource свойству BindingSource объекта BindingNavigator, эти элементы будут выделены серым цветом.
Обратите внимание, что в обработчике события Click вашей кнопки btnAll вы привязываете свою DataTable непосредственно к DataGridView. Это делает ваш BindingNavigator бесполезным. Вам необходимо привязать вашу DataTable к вашему BindingSource, а ваш BindingSource к вашему DataGridView. Затем элементы BindingNavigator манипулируют BindingSource и, таким образом, влияют на все, с чем связан BindingSource, то есть на DataGridView. Если BindingSource не привязан к DataGridView, то BindingNavigator не может влиять на DataGridView.