Solved

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

Posted on 2010-11-15
2
496 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
2 Comments
 
LVL 7

Accepted Solution

by:
rogerard earned 500 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

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

In my previous article (http://www.experts-exchange.com/Programming/Languages/.NET/.NET_Framework_3.x/A_4362-Serialization-in-NET-1.html) we saw the basics of serialization and how types/objects can be serialized to Binary format. In this blog we wi…
For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

914 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

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now