I have an application with a datagridview on the bottom half of the page and textboxes, combo-boxes, buttons, etc... on the top half.
When the user changes the highlighted row in the grid then it displays all of the information for that row in the objects on the top half.
If user wants to change the data in a row then he clicks an edit button which enables the textboxes etc... and allows the user to edit the data.
(All of the above works fine).
When he wants to save the changes then he clicks the save button.
This should update the datasource to the grid and show the changes in the grid.
However, I have been unable to get it do this.
Any Help appreciated.
Code below:
When the user changes the highlighted row in the grid then it displays all of the information for that row in the objects on the top half.
If user wants to change the data in a row then he clicks an edit button which enables the textboxes etc... and allows the user to edit the data.
(All of the above works fine).
When he wants to save the changes then he clicks the save button.
This should update the datasource to the grid and show the changes in the grid.
However, I have been unable to get it do this.
Any Help appreciated.
Code below:
Imports System.Data.SqlClient Public Class frmEmployeeInformation Public SQL As New SQLControl() Dim strEditType As String Private Sub frmEmployeeInformation_Load(sender As Object, e As EventArgs) Handles MyBase.Load LoadGrid() End Sub Public Sub LoadGrid(Optional query As String = "") If query = "" Then SQL.ExecuteQuery("Select * from EmployeeInformation;") Else SQL.ExecuteQuery(query) End If If SQL.HasException(True) Then Exit Sub dgvEmployeeInformation.DataSource = SQL.DBDS.Tables(0) dgvEmployeeInformation.Rows(0).Selected = True SQL.DBDA.UpdateCommand = New SqlClient.SqlCommandBuilder(SQL.DBDA).GetUpdateCommand End Sub Private Sub DisplayValues() If dgvEmployeeInformation.RowCount > 2 Then If dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("FirstName").Value <> Nothing Then txtFirstName.Text = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("FirstName").Value.ToString 'EmployeeInformation.FirstName End If If dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("LastName").Value <> Nothing Then txtLastName.Text = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("LastName").Value.ToString 'EmployeeInformation.LastName End If If dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("SSN").Value IsNot Nothing Then txtSSN.Text = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("SSN").Value.ToString 'EmployeeInformation.SSN End If If dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("EmployeeInformationID").Value <> Nothing Then txtEmployeeID.Text = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("EmployeeInformationID").Value.ToString 'EmployeeInformation.EmployeeInformationID End If 'If dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("ADPID").Value <> Nothing Then 'txtADPID.Text = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("ADPID").Value.ToString 'EmployeeInformation.ADPID 'End If 'If dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("VP").Value <> Nothing Then 'cboVP.Text = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("VP").Value.ToString 'EmployeeInformation.VP 'End If If dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("Default_LocationID").Value <> Nothing Then cboDefaultLocation.Text = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("Default_LocationID").Value.ToString 'EmployeeInformation.DefaultLocation End If If dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("SystemTableID").Value <> Nothing Then txtTableID.Text = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("SystemTableID").Value.ToString 'EmployeeInformation.TableID End If If dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("EmployeeActive").Value <> Nothing Then chkbxActive.Checked = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("EmployeeActive").Value.ToString 'EmployeeInformation.EmployeeActive End If If dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("PrimaryFile").Value <> Nothing Then chkbxPrimaryFile.Checked = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("PrimaryFile").Value.ToString 'EmployeeInformation.PrimaryFile End If If dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("UnallocatedTime").Value <> Nothing Then chkbxUnallocatedTime.Checked = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("UnallocatedTime").Value.ToString 'EmployeeInformation.UnallocatedTime End If End If End Sub Private Sub ChangeButtons() btnClose.Enabled = Not btnClose.Enabled btnSave.Enabled = Not btnSave.Enabled btnClear.Enabled = Not btnClear.Enabled btnFind.Enabled = Not btnFind.Enabled btnCancel.Enabled = Not btnCancel.Enabled btnEdit.Enabled = Not btnEdit.Enabled btnAdd.Enabled = Not btnAdd.Enabled btnCopy.Enabled = Not btnCopy.Enabled End Sub Private Sub ChangeFields() chkbxActive.Enabled = Not chkbxActive.Enabled chkbxPrimaryFile.Enabled = Not chkbxPrimaryFile.Enabled chkbxUnallocatedTime.Enabled = Not chkbxUnallocatedTime.Enabled txtTableID.Enabled = Not txtTableID.Enabled txtADPID.Enabled = Not txtADPID.Enabled cboVP.Enabled = Not cboVP.Enabled cboDefaultLocation.Enabled = Not cboDefaultLocation.Enabled End Sub Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click Me.Close() End Sub Private Sub btnFind_Click(sender As Object, e As EventArgs) Handles btnFind.Click If txtEmployeeID.Text <> "" Then SQL.AddParam("@EmployeeInformationID", txtEmployeeID.Text) LoadGrid("select * from EmployeeInformation where EmployeeInformationID = @EmployeeInformationID;") ElseIf txtSSN.Text <> "" Then SQL.AddParam("@SSN", txtSSN.Text) LoadGrid("select * from EmployeeInformation where SSN = @SSN;") ElseIf txtFirstName.Text <> "" And txtLastName.Text <> "" Then SQL.AddParam("@FirstName", txtFirstName.Text) SQL.AddParam("@LastName", txtLastName.Text) LoadGrid("select * from EmployeeInformation where FirstName = @FirstName and LastName = @LastName;") Else LoadGrid("Select * from EmployeeInformation;") End If End Sub Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click txtFirstName.Text = "" txtLastName.Text = "" txtSSN.Text = "" txtEmployeeID.Text = "" txtADPID.Text = "" cboVP.Text = "" cboDefaultLocation.Text = "" txtTableID.Text = "" chkbxActive.Checked = "False" chkbxPrimaryFile.Checked = "False" chkbxUnallocatedTime.Checked = "False" End Sub Private Sub dgvEmployeeInformation_DoubleClick(sender As Object, e As EventArgs) Handles dgvEmployeeInformation.DoubleClick DisplayValues() ChangeFields() ChangeButtons() End Sub Private Sub dgvEmployeeInformation_SelectionChanged(sender As Object, e As EventArgs) Handles dgvEmployeeInformation.SelectionChanged DisplayValues() End Sub Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click If strEditType = "Edit" Then ' The code below updates the grid but the changes are not saved to the database. Probably not the way to go dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("FirstName").Value = txtFirstName.Text 'EmployeeInformation.FirstName dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("LastName").Value = txtLastName.Text 'EmployeeInformation.LastName dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("SSN").Value = txtSSN.Text 'EmployeeInformation.SSN dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("EmployeeInformationID").Value = txtEmployeeID.Text 'EmployeeInformation.EmployeeInformationID dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("Default_LocationID").Value = cboDefaultLocation.Text 'EmployeeInformation.DefaultLocation dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("SystemTableID").Value = txtTableID.Text 'EmployeeInformation.TableID dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("EmployeeActive").Value = chkbxActive.Checked 'EmployeeInformation.EmployeeActive dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("PrimaryFile").Value = chkbxPrimaryFile.Checked 'EmployeeInformation.PrimaryFile dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("UnallocatedTime").Value = chkbxUnallocatedTime.Checked 'EmployeeInformation.UnallocatedTime ' The code above updates the grid but the changes are not saved to the database. dgvEmployeeInformation.EndEdit() SQL.DBDS.Tables(0).AcceptChanges() SQL.DBDA.Update(SQL.DBDS) 'txtADPID.Text = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("ADPID").Value.ToString 'EmployeeInformation.ADPID 'cboVP.Text = dgvEmployeeInformation.Rows(dgvEmployeeInformation.CurrentRow.Index).Cells("VP").Value.ToString 'EmployeeInformation.VP End If ChangeFields() ChangeButtons() strEditType = "" 'LoadGrid() End Sub Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click ChangeFields() ChangeButtons() strEditType = "" End Sub Private Sub btnEdit_Click(sender As Object, e As EventArgs) Handles btnEdit.Click dgvEmployeeInformation_DoubleClick(Nothing, EventArgs.Empty) strEditType = "Edit" End Sub Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click btnClear_Click(Nothing, EventArgs.Empty) txtFirstName.Focus() strEditType = "Add" ChangeFields() ChangeButtons() End Sub Private Sub btnCopy_Click(sender As Object, e As EventArgs) Handles btnCopy.Click cboDefaultLocation.Focus() strEditType = "Copy" ChangeFields() ChangeButtons() End Sub End Class
Last edited by a moderator: