Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

OPening a form and passing data from datagrid in VB.NET

Posted on 2010-11-15
2
Medium Priority
?
503 Views
Last Modified: 2012-05-10
I have a form (frmMain) with a datagrid (dgCustomerMain).  I also created a contextmenu (contextCustomers) with a selection of "View Customer Detail".  I would like to right click on a record to show the context menu, select the "View Customer Detail" item and then open up an existing form (frmCustomerDetail) to that particular record for editing.  I have searched and tried similar posts, but they are either in C or only create a msgbox.

Currently, I have the right click code working:
    Private Sub dgCustomerMain_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dgCustomerMain.MouseUp
        If e.Button = Windows.Forms.MouseButtons.Right Then
 
        End If
    End Sub

Now I just need the code to display the context and open the form to the correct record.
0
Comment
Question by:roarteam
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 7

Accepted Solution

by:
rogerard earned 2000 total points
ID: 34141844
If you change the contextmenu to a contextmenustrip, then you can assign it to the datagrid in the properties tab and then you can let .net handle the right click to show the menu.  Just a thought.

As for passing the information, in the form you want to open, create a
sub New (byval row as datagridrow)
... your code here to initialize ...
end sub

Then

   Private Sub OpenFormToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenFormToolStripMenuItem.Click
        dim newform as new MyCustomform(datagrid1.SelectedRows(0))
        newform.show
    End Sub
0
 

Author Comment

by:roarteam
ID: 34147039
Here's what worked..

In the form load:
 
Me.CustomerTBLTableAdapter.Fill(Me.CustomerDataSet.CustomerTBL)
        With Me.dgCustomerMain
            .SelectionMode = DataGridViewSelectionMode.FullRowSelect
            .MultiSelect = False
        End With

Open in new window

That selects the entire row anytime a cell is clicked

To pick which row to select:
 
Private Sub dgCustomerMain_CellMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgCustomerMain.CellMouseDown
        If (e.Button = Windows.Forms.MouseButtons.Right) Then
            Debug.WriteLine("In CellMouseDown")
            dgCustomerMain.ClearSelection()
            dgCustomerMain.Rows(e.RowIndex).Selected = True
            dgCustomerMain.CurrentCell = dgCustomerMain.Rows(e.RowIndex).Cells(1)
        End If
    End Sub

Open in new window


 
To open the form and pass a value
 
Private Sub dgCustomerMain_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dgCustomerMain.MouseUp
        If e.Button = Windows.Forms.MouseButtons.Right Then
            Dim grid As DataGridView = sender
            Dim menu As ContextMenuStrip = New ContextMenuStrip
            Dim pt As Point = grid.PointToClient(Control.MousePosition)
            Dim id As Integer = Convert.ToInt16(Me.dgCustomerMain.SelectedCells(0).Value.ToString)
            Me.contextCustomers.Show(dgCustomerMain, pt.X, pt.Y)
        End If
    End Sub

Open in new window


And in the form being opened...
 
Public Sub New(ByVal idNum As Integer)
        InitializeComponent()
        Debug.WriteLine("ID passed = " & idNum)
        Dim row As Integer
        row = CustomerTBLBindingSource.Find("CustomerID", row)
        Debug.WriteLine("Index=" & row)
        If row <> -1 Then
            CustomerTBLBindingSource.Position = row
        End If

Open in new window


The find is not working, but I'll leave that to another post.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…

670 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question