none
vb2008 DataGridView2_CellClick 問題 RRS feed

  • 問題

  • 親愛的各位大大:

              我有一個DataGridView2_CellClick問題!當我一次對DataGridView2_CellClick點一下會將資料傳送到DataGridView1中。但是我再次點選DataGridView2_CellClick會出現錯誤。原因是我在DataGridView1中以程式碼添加了三欄。

    問題1:如何讓我再次點選DataGridView2_CellClick時可以刪除DataGridView1中添加的三欄?或回到DataGridView1初始值?

    問題2:當我點選DataGridView2_CellDoubleClick時等同於DataGridView2_CellClick,這個程式碼該怎麼寫呢?

     Private Sub DataGridView2_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView2.CellClick
            Dim conn1 As SqlConnection
            Dim strDbCon1 As String
            strDbCon1 = "Persist Security Info=False;User ID=sa;pwd=sa;Initial Catalog=Grandex;Data Source=192.195.1.109"
            conn1 = New SqlConnection(strDbCon1)
            conn1.Open()
            Dim bbs As New SqlDataAdapter("SELECT PURTA.TA003, PURTA.TA001, PURTA.TA002, PURTB.TB003,CMSME.ME002, CMSMV.MV047, PURTA.TA013, PURTA.TA016,PURTB.TB004, PURTB.TB005, PURTB.TB006, PURTB.TB009,PURTB.TB007, PURTB.TB011, PURTB.TB032, PURTB.TB043,PURTB.TB039 FROM PURTA INNER JOIN PURTB ON PURTA.TA001 = PURTB.TB001 AND PURTA.TA002 = PURTB.TB002 INNER JOIN CMSMV ON PURTA.TA012 = CMSMV.MV001 INNER JOIN   CMSME ON PURTA.TA004 = CMSME.ME001 where PURTA.TA001=" + TextBox1.Text + " AND PURTA.TA002=" + TextBox2.Text + " order by TA001,TA002,TB003 ASC", strDbCon1)
            bbs.Fill(ady, "aa")
            myDatatable1 = ady.Tables("aa")
            myDatatable1.Columns.Add("供應商")
            myDatatable1.Columns.Add("樣品類別")
            myDatatable1.Columns.Add("採購人員")
            DataGridView1.DataSource = myDatatable1

    End Sub

    感謝各位大大

    2010年8月31日 上午 02:26

解答

  • 1) If  myDatatable1.Columns.Contains("供應商") then

            '欄位已存在

        End if

    2) DataGridView2_CellClick(Ssender, e)

    2010年9月1日 上午 05:31

所有回覆

  • 1) 先判斷欄位是否存在? 若存在, 則利用Columns集合的Remove方法將欄位移除

    2) 在DataGridView2_CellDoubleClick事件處理程序中呼叫DataGridView2_CellClick事件處理程序

    2010年8月31日 上午 06:44
  • 親愛的大大:

         我不知怎麼判斷

         1.在myDatatable1中的Column是否存在程式要怎麼寫? 我是要判斷當myDatatable1中的欄位名稱

            為供應商如果存在則移除該欄位。我嘗試用if else   但還是寫不出來,所以請大大撥空幫我寫一

            下。

         2.在DataGridView2_CellDoubleClick事件處理程序中呼叫DataGridView2_CellClick事件處理程序

           我在DataGridView2_CellDoubleClick用Call DataGridView2_CellClick()但它需要引數那引數我

          該怎麼填呢?

      感謝大大您的指教  

    2010年9月1日 上午 02:51
  • [DataColumnCollection. Contains 方法 ] 檢查集合是否包含具有指定名稱的資料行

    DataGridView.CellClick和DoubleClick的參數型別是相同的, 你直接把sender 和 e 傳過去就好了

    [DataGridView. . :: . CellDoubleClick 事件 ]

    [DataGridView. . :: . CellClick 事件 ]

    讀一下上面兩份連結, 試著去瞭解為什麼可以直接傳sender和e


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年9月1日 上午 03:16
    版主
  • 1) If  myDatatable1.Columns.Contains("供應商") then

            '欄位已存在

        End if

    2) DataGridView2_CellClick(Ssender, e)

    2010年9月1日 上午 05:31