Dear Sir,
I'm trying to fill data from another datagridview to main datagridview in vb.net
But result in frmMaindt nothing appears when I clicked button event ("btnOK")
Is there something wrong with the code please guide me
Thanks
Code in frmMaindt
Public Class frmMaindt
Public dtMainGrid As DataTable = New DataTable
Public flag As Boolean = False
Sub Header()
dtMainGrid.Columns.Add("Item")
dtMainGrid.Columns.Add("Item Description")
dtMainGrid.Columns.Add("Qty")
dtMainGrid.Columns.Add("Item Unit")
dtMainGrid.Columns.Add("Unit Price")
End Sub
Sub BindGrid()
Header()
Dim row As DataRow = dtMainGrid.NewRow
row("Item") = ""
row("Item Description") = ""
row("Qty") = ""
row("Item Unit") = ""
row("Unit Price") = ""
dtMainGrid.Rows.Add(row)
DataGridView1.DataSource = dtMainGrid
DataGridView1.Refresh()
DataGridView1.ColumnHeadersVisible = True
Dim x As Integer = 0
For Each item In dtMainGrid.Columns
DataGridView1.Columns(x).HeaderText = item.ToString
DataGridView1.Columns.Item(x).SortMode = DataGridViewColumnSortMode.NotSortable
x = x + 1
Next
Dim btn As New DataGridViewButtonColumn
btn.HeaderText = ""
btn.Text = "SEARCH"
btn.Name = "btn"
btn.DefaultCellStyle.BackColor = Color.Black
btn.DefaultCellStyle.ForeColor = Color.White
btn.UseColumnTextForButtonValue = True
DataGridView1.Columns.Insert(0, btn)
DataGridView1.Columns(0).Width = 50
DataGridView1.Columns(1).Width = 100
DataGridView1.Columns(2).Width = 100
DataGridView1.Columns(3).Width = 100
DataGridView1.Columns(4).Width = 100
DataGridView1.Columns(5).Width = 100
DataGridView1.Columns(0).ReadOnly = True
DataGridView1.Columns(1).ReadOnly = False
DataGridView1.Columns(2).ReadOnly = True
DataGridView1.Columns(3).ReadOnly = False
DataGridView1.Columns(4).ReadOnly = True
DataGridView1.Columns(5).ReadOnly = True
DataGridView1.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DataGridView1.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
DataGridView1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
DataGridView1.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns(3).DefaultCellStyle.Format = "#,###,###,##0"
DataGridView1.Columns(5).DefaultCellStyle.Format = "#,###,###,##0.#0"
DataGridView1.AllowUserToAddRows = False
DataGridView1.ScrollBars = ScrollBars.Both
DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
txtRowIdx.Text = "0"
'DataGridView1.Rows(txtRowIdx.Text).Cells(1).Value = ""
BindGrid()
End Sub
Private Sub DataGridView1_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseClick
txtRowIdx.Text = e.RowIndex
If e.Button = MouseButtons.Left AndAlso e.ColumnIndex = 0 Then
Dim frmSearchdt As frmSearchdt = New frmSearchdt()
frmSearchdt.txtRowIndex.Text = e.RowIndex
frmSearchdt.txtRowIndexSearch.Text = "0"
Dim result As DialogResult = frmSearchdt.ShowDialog()
If result = DialogResult.OK Then
DataGridView1.Rows(frmSearchdt.RowIndexMainGrid).Cells(1).Value = frmSearchdt.ItemCode
DataGridView1.Rows(frmSearchdt.RowIndexMainGrid).Cells(2).Value = frmSearchdt.ItemDesc
DataGridView1.Rows(frmSearchdt.RowIndexMainGrid).Cells(3).Value = frmSearchdt.Qty
DataGridView1.Rows(frmSearchdt.RowIndexMainGrid).Cells(4).Value = frmSearchdt.ItemUnit
DataGridView1.Rows(frmSearchdt.RowIndexMainGrid).Cells(5).Value = frmSearchdt.UnitPrice
End If
End If
If e.ColumnIndex = 1 Then
Try
If flag = True Then
If Not IsDBNull(DataGridView1.Rows(txtRowIdx.Text).Cells(1).Value) Then
DataGridView1.CurrentCell = DataGridView1.Rows(txtRowIdx.Text).Cells(1)
End If
End If
Catch ex As Exception
Return
End Try
End If
End Sub
End Class
Code in frmSearchdt
Public Class frmSearchdt
Public _rowIndexMainGrid As String = ""
Public _item As String = ""
Public _itemDesc As String = ""
Public _qty As String = ""
Public _itemUnit As String = ""
Public _unitPrice As String = ""
Public Property RowIndexMainGrid As String
Get
Return _rowIndexMainGrid
End Get
Set(ByVal value As String)
_rowIndexMainGrid = value
End Set
End Property
Public Property ItemCode As String
Get
Return _item
End Get
Set(ByVal value As String)
_item = value
End Set
End Property
Public Property ItemDesc As String
Get
Return _itemDesc
End Get
Set(ByVal value As String)
_itemDesc = value
End Set
End Property
Public Property Qty As String
Get
Return _qty
End Get
Set(ByVal value As String)
_qty = value
End Set
End Property
Public Property ItemUnit As String
Get
Return _itemUnit
End Get
Set(ByVal value As String)
_itemUnit = value
End Set
End Property
Public Property UnitPrice As String
Get
Return _unitPrice
End Get
Set(ByVal value As String)
_item = value
End Set
End Property
Sub BindGrid(ByVal isSearch As Boolean, ByVal searchBy As String)
Dim dt As DataTable = New DataTable
Dim data As Datadt = New Datadt()
dt = Data.GetData()
If (isSearch) Then
Dim dv As New DataView(dt)
dv.RowFilter = searchBy
DataGridView1.DataSource = dv
Else
dt.Select()
DataGridView1.DataSource = dt
End If
DataGridView1.Refresh()
DataGridView1.ColumnHeadersVisible = True
'Dim x As Integer = 0
'For Each item In dt.Columns
' DataGridView1.Columns(x).HeaderText = item.ToString
' x = x + 1
'Next
DataGridView1.Columns(2).Visible = False
DataGridView1.Columns(3).Visible = False
DataGridView1.Columns(0).Width = 100
DataGridView1.Columns(1).Width = 350
DataGridView1.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
DataGridView1.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
DataGridView1.ScrollBars = ScrollBars.Both
DataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing
DataGridView1.ReadOnly = True
End Sub
Private Sub frmSearchdt_Load(sender As Object, e As EventArgs) Handles MyBase.Load
BindGrid(False, "")
End Sub
Sub SelectedRow(ByVal index As Integer)
Me.Hide()
Dim rowIndexMainGrid = CInt(txtRowIndex.Text)
_rowIndexMainGrid = rowIndexMainGrid
_item = DataGridView1.Rows(index).Cells(0).Value
_itemDesc = DataGridView1.Rows(index).Cells(1).Value
_qty = "0"
_itemUnit = DataGridView1.Rows(index).Cells(2).Value
_unitPrice = DataGridView1.Rows(index).Cells(3).Value
End Sub
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
SelectedRow(CInt(txtRowIndexSearch.Text))
End Sub
Private Sub DataGridView1_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseClick
txtRowIndexSearch.Text = e.RowIndex
End Sub
Private Sub DataGridView1_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentDoubleClick
SelectedRow(e.RowIndex)
End Sub
End Class
code in Datadt
Public Class Datadt
Public Function GetData() As DataTable
Dim dt As DataTable = New DataTable
Try
dt.Columns.Add("Item")
dt.Columns.Add("Item Description")
dt.Columns.Add("Item Unit")
dt.Columns.Add("Unit Price")
Dim row As DataRow = dt.NewRow
row("Item") = "B-0001"
row("Item Description") = "Laptop ASUS E4567 RAM 8 GB"
row("Item Unit") = "PCS"
row("Unit Price") = "9000000"
dt.Rows.Add(row)
row = dt.NewRow
row("Item") = "B-0002"
row("Item Description") = "Keyboard Logitech E84"
row("Item Unit") = "PCS"
row("Unit Price") = "70000"
dt.Rows.Add(row)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Return dt
End Function
End Class