• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 374
  • Last Modified:

How to open form from datagridview

Hello,

I have a query that populates a DataGridView. I'm trying to acquire some code to get it to open a databound form when the user selects (double clicks) a row. I have a unique identifier which pulls using e.rowindex. I've completed this successfully in VB/VBA. Any ideas on this will be a huge help! The query is pretty simple. "PendingID" is the unique identifier.

This is written in VB.NET

Thanks!!!
Private Sub cmdSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSearch.Click
 
        Dim OptControlArray() As Control = {OptName, OptClaimNo, OptDate, OptCustodian}
        Dim sConnectionString, sSQL As String
        sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\diw07\My Documents\Daily Backups\phone memo backend.mdb"
 
        If OptClaimNo.Checked = True Then
            sSQL = "SELECT PendingID, PendingClaimNum, Last, First, DatePending, Custodian FROM Pending WHERE PendingClaimNum Like '" & txtClaimNo.Text & "'"
        ElseIf OptName.Checked = True Then
            sSQL = "SELECT PendingID, PendingClaimNum, Last, First, DatePending, Custodian FROM Pending WHERE Last Like '" & txtLastName.Text & "'"
        ElseIf OptCustodian.Checked = True Then
            sSQL = "SELECT PendingID, PendingClaimNum, Last, First, DatePending, Custodian FROM Pending WHERE Last Like '" & cboCustodian.Text & "'"
        ElseIf OptDate.Checked = True Then
            sSQL = "SELECT PendingID, PendingClaimNum, Last, First, DatePending, Custodian FROM Pending WHERE Last Like '" & txtDateRec.Text & "'"
        End If
 
        Dim conn As New System.Data.OleDb.OleDbConnection(sConnectionString)
        Dim cmd As New System.Data.OleDb.OleDbCommand(sSQL, conn)
        conn.Open()
        Dim dat As OleDbDataAdapter = New OleDbDataAdapter(sSQL, conn)
        Dim dt As New DataTable()
 
        dat.Fill(dt)
        lstResults.DataSource = dt
        conn.Close()
 
 
    End Sub
 
 
 
 
 
 
 
********Need something here************
 
 Private Sub lstResults_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles lstResults.CellMouseDoubleClick
        Dim I As Int32
        I = e.RowIndex
 
Another query here?
        
        frm_IMT.Show()
       
    End Sub

Open in new window

0
c9k9h
Asked:
c9k9h
  • 3
  • 2
1 Solution
 
DhaestCommented:
DataGridView with Detail Edit Form - VS 2005
http://www.codeproject.com/KB/vb/DataGridViewEditForm.aspx
Try this:
 
Private Sub dataGridView1_DoubleClick(ByVal sender As Object, ByVal e As EventArgs) 
    Dim id As String = dataGridView1.SelectedRows(0).Cells("id").ToString() 
    Dim frm As New NewForm(id) 
    'passing id into constructor of the new form 
    frm.Show() 
End Sub 

Open in new window

0
 
c9k9hAuthor Commented:
I've tried this but I'm getting an error "Too many arguments to Public Sub New()"


Also... won't this create a new form? I want to open an existing form and have it pull the record displayed in the DataGridView.


Thanks!
0
 
DhaestCommented:
>> I've tried this but I'm getting an error "Too many arguments to Public Sub New()"

You'll need to create a constructor which accepts the id as a parameter. When you pass the id, you can retrieve the data in your form_load event
0
 
c9k9hAuthor Commented:
Okay I found the following example:

Module Module1
                                             
                                             Sub Main()
                                             
                                             Dim con As New Constructor(10)
                                             WriteLine(con.display())
                                             'storing a value in the constructor by passing a value(10) and calling it with the
                                             'display method
                                             Read()
                                             
                                             End Sub
                                             
                                             End Module
                                             
                                             Public Class Constructor
                                             Public x As Integer
                                             
                                             Public Sub New(ByVal value As Integer)
                                             'constructor
                                             x = value
                                             'storing the value of x in constructor
                                             End Sub
                                             
                                             Public Function display() As Integer
                                             Return x
                                             'returning the stored value
                                             End Function
                                             
         End Class                                        



Ultimately what i want to do is assign a value to "id" which would be the results of the on click event (query)? I understand (i think) what is going on in the above example, although it seems quite simple in comparison of what I'm trying to do.
0
 
c9k9hAuthor Commented:
Got It,

Thanks!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now