2014-12-11 3 views
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 
+0

어떤 기사를 사용 했습니까/연구 했습니까? – Neolisk

답변

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에 영향을 줄 수 없습니다.

+0

의견을 보내 주셔서 감사 드리며 내 교과서에서 알아 냈습니다. 귀하의 설명은 대단히 도움이되었습니다! – Chevygal1969