none
有關於DataGridView1回傳值到另一個DataGridView的問題 RRS feed

  • 問題

  •  

    請問有關於DataGridView1回傳值到另一個DataGridView的問題??

    有找過傳值的問題論壇,但好像都和我要的答案,不太相同,所以只好在問各位大大~~~~~~

    問題一:

    在Form1中的DataGridView1裡的標題列中,其中一個標題為"廠商名稱"(第四行),當按下這個廠商名稱時,可以跳出另一個Form2,在Form2裡面只要點到"廠商名稱"(第二行)某一個儲存格時,在按下Button確定,就可以將找到的名稱傳回到Form1的第四行。

    在Form2的Button裡,我已經找到要傳回的值,

    Dim vdr As String
            If VendorDataGridView.CurrentRow.Cells(1).Value <> Nothing Then
                vdr = VendorDataGridView.CurrentRow.Cells(1).Value
         End If

     

    再來是要將找到的值...........vdr

    怎麼帶回到Form1裡的DataGridView1的第四行

    Form1.show(vdr)      <-------------------------這裡我寫這樣,但是這樣會出現錯誤!!

     

    問題二:又要如何將在Form2找到的vdr變數的值,在Form1的DataGridView1接收呢?

     

    2007年11月22日 上午 12:35

解答

  • 原本點擊 Header 的時候會做排序的動作,而你現在把它變成是彈出式窗的連結動作。

    那麼你就應該把當原先的排序動作關閉以為互相影響。

     

    程式碼區塊

    dataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;

     

     

     

    2007年11月27日 上午 11:22

所有回覆

  • 還記得我在 【有關DataGridView丟回的值? 】說的嗎?

     

     chhuang 寫信:

    論壇上關於 "Form 傳值" 、"表單 傳值" 的討論值實在太多了...

     

    不管是 DataGridView 或是 TextBox 或是 comboBox 等等...

    甚至是一個值兩個值三個值...觀念都是差不多的...

     

    ex 不同的form傳值請問form之間互傳資料的問題

     

    第一次很多熱心的網友幫你解決了問題...(包括我自己 Orz)

    結果反而害你沒有去了解如何跨 From 傳值的機會...

    這次又遇到相同得問題...你又不會解決了...

     

    2007年11月22日 上午 01:35
  • HI,

     

    Form1尚未關閉, 所以不需要再顯示一次, 您可以在Form2中宣告一個Form1型態的變數, 然後在顯示Form2之前先填好Form1型態變數的值, 如下:

     

    Public Class Form2

    Inherits Form

    Friend f1 as Form1

    End Class

     

    Form1類別也可以預先宣告一個接結果的字串變數, 如下:

     

    Public Class Form1

    Inherits Form

    Friend vdr As String

    End Class

     

    Dim f2 as New Form2

    f2.f1=Me

    ...

     

    當取得vdr之後, 就可以利用以下的語法傳給Form1

     

    f2.f1.vdr=vdr

     

    而Form1類別在取得結果之後要如何使用就是Form1的事了

     

    tihs

    2007年11月22日 上午 02:06
  •  

    請問各位高手!!

    我現在已經可以把Form2下的DataGridView1裡面的某值傳回到Form1的DataGridView1裡了,

    但我現在的問題是,假設Form1有兩筆(列)資料,

    在點第一筆資料的廠商名稱要連到Vendormenu的Form時,

    主畫面Form1的游標那列會跑到下一列,

    這樣就會導致原先要點到的那列的廠商資料,跑到第二列去了

    而這樣的話,第一列就沒有點到,

    為什麼游標會跑來跑去的呢??

    正常的情況下,游標應該是由使用者在移動的,或是由使用者點到BindingNavigator才會移動,

    而非自已移動到下一列,不是嗎??

    請問這個要怎麼解決呢??

     

     

    2007年11月27日 上午 02:09
  •  新手上路min 寫信:

     

    在點第一筆資料的廠商名稱要連到Vendormenu的Form時,

    主畫面Form1的游標那列會跑到下一列,

     

     

    HI   Min

     

    意思是說   是  連到Vendormenu的Form時  所引起的嗎 ?

     

    如果是 

     

    可否 查看   連到Vendormenu的Form時   做了哪些動作

    2007年11月27日 上午 05:27
  • cmf~~~~~~~

    應該是說當我點到第二筆時,按下廠商名稱跳出Vendormenu時,

    主Form裡的DataGridVeiw就會亂掉,

    附上我Vendormenu的程式

     

    將廠商名稱傳回主Form是在Button1做的,所以應該是不會去影響到原來的主Form,

    也看過點到Form才會跑掉的程式

    也只有以下這個程式,是我在那一個寫錯,才影響到的呢??

    Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
            '將表單上廠商名稱連到VendormenuForm
            If e.ColumnIndex = 4 Then
                Vendormenu.Show()
            End If
        End Sub

    程式碼區塊

    Public Class Vendormenu
        Inherits Form
        Private bs As New BindingSource
        Private fMainDataForm As Form5111
        Public Sub SetMainDataForm(ByVal v As Form5111)
            fMainDataForm = v
        End Sub
      
        Private Sub Vendormenu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: 這行程式碼會將資料載入 'CMMS1DataSet.Vendormenu' 資料表。您可以視需要進行移動或移除。
            Me.VendormenuTableAdapter.Fill(Me.CMMS1DataSet.Vendormenu)
            Dim cn As New SqlClient.SqlConnection("server=.;database=cmms1;uid=sa;password=sescsapw")
            Dim da As New SqlClient.SqlDataAdapter
            Dim ds As New DataSet
            Dim cmd As New SqlClient.SqlCommand
            cmd = New SqlClient.SqlCommand("SELECT   VendorID AS 廠商編號, Name AS 廠商名稱, Telephone AS 電話,Address AS 公司地址 FROM dbo.A_Vendor", cn)
            da.SelectCommand = cmd
            da.Fill(ds, "Vendor")
            bs.DataSource = ds.Tables(0)
            VendormenuDataGridView.DataSource = bs

        End Sub

     

           Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            '確定按鈕
            Dim vdr As Object = Me.VendormenuDataGridView.CurrentRow.Cells(1).Value
            Form5111.DataGridView1.CurrentRow.Cells(4).Value = vdr
            If fMainDataForm IsNot Nothing Then
                fMainDataForm.ChangCell02(vdr)
                fMainDataForm.Show()
            End If
            Me.Close()

        End Sub
    End Class

     

     

     

    2007年11月27日 上午 07:25
  • HI  MIN

     

    如果改成這樣呢

     

    程式碼區塊

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            '確定按鈕
            Dim vdr As Object = Me.VendormenuDataGridView.CurrentRow.Cells(1).Value
            Form5111.DataGridView1.CurrentRow.Cells(4).Value = vdr


            Me.Close()

        End Sub

     

     

    2007年11月27日 上午 07:38
  • 還是會跑來跑去的也~~~~~~~~~

    只要點到第二筆去連Vendormenu時就會跑了

    是否和BindingNavigator1有關係呢??

     

    2007年11月27日 上午 07:53
  • HI MIN

     

    如果不用 CurrentRow     改用 直接指定 某一列呢  Rows(index).Cells(4).Value = vdr

     

    2007年11月27日 上午 07:58
  • Hi cmf

    沒辦法指定某一列........因為不知使用者會去刪那一列,怎麼訂定它呢??

     

    2007年11月27日 上午 08:11
  • HI  MIN

     

    引言: 只要點到第二筆去連Vendormenu時

     

    ?????

     

    這不就知道了嗎

     

     

     

    2007年11月27日 上午 08:18
  • HI   cmf

    你說的是像這樣子嗎?

    Dim vdr As Object = Me.VendormenuDataGridView.CurrentRow.Cells(1).Value
            Form5111.DataGridView1.Rows(1).Cells(4).Value = vdr
            Me.Close()

     

    但這樣好像沒什麼改變 ,DataGridView裡的資料還是會跑!!

     

    2007年11月27日 上午 08:41
  •  新手上路min 寫信:

    DataGridView裡的資料還是會跑!! 

     

    跑去哪裡?

     

    2007年11月27日 上午 08:43
  • Hi  cmf

    對不起,我把問題說的太白話了,

    應該是說我的資料,還是會因為連到Vendormenu時,

    原來的DataGridView裡的列的資料,還是會上下移動(剛說跑)

    並沒有因為設定

    Form5111.DataGridView1.Rows(1).Cells(4).Value = vdr

    就不會亂移動!!

    2007年11月27日 上午 08:50
  • HI MIN

     

    Form5111.DataGridView1.Rows(1).Cells(4).Value = vdr     資料有寫入 第一列嗎?

     

    如果有

    Form5111.DataGridView1.Rows(index).Cells(4).Value = vdr

    Form5111.DataGridView1.CurrentCell =Form5111.DataGridView1.Rows(index).Cells(4)

     

      

    2007年11月27日 上午 09:00
  • Hi  cmf

    我發現在DataGridView的標題列,裡面有一個小三角,

    小三角,好像是在控制排序的動作,

    我猜想是因為點到標通列時,就會去影響到小三角,

    可是我在DataGridView的屬性沒有看到有關這個問題的屬性,

    請問你知道在那裡嗎??

     

     

    2007年11月27日 上午 09:32
  • 原本點擊 Header 的時候會做排序的動作,而你現在把它變成是彈出式窗的連結動作。

    那麼你就應該把當原先的排序動作關閉以為互相影響。

     

    程式碼區塊

    dataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;

     

     

     

    2007年11月27日 上午 11:22
  • 謝謝cmf、chhuang!!

    已經可以執行成功了!!問題是出在排序動作~~~~~~

    再次感謝!!

     

    2007年11月28日 上午 12:34