none
VB2010的textbox去顯示datagridview的資料 RRS feed

  • 問題

  • http://ppt.cc/--QK

     

    如圖~想請問一下

    我目前的VS2010畫面是這樣 上面是textbox

    下面是datagridview 目前已經可以連上資料庫撈資料了

    我想要做到滑鼠游標點選選一下某筆資料欄位 上面的textbox就會跟著顯示資料出來

     

    另外有個延誤類別 那是個下拉式選單

    平常畫面是不可以下拉的 只有案新增修改刪除的時候

    才可以下拉 要怎麼做呢??

     

     

    我有從別人的程式碼拿來修改 但不曉得要怎麼修改才好

    只能大概看一下 可能需要須改的段落程式碼...

    #Region "DataGridView事件"

        ''' <summary>選則客戶資料列</summary>
        Private Sub DataGridViewCustomer_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridViewCustomer.CellClick
            If MyBase.CurrentFormFunctionStatus = FormBase.EnumStatus.FormFunctionStatus.FormClose Then Exit Sub
            If MyBase.CurrentFormFunctionStatus = FormBase.EnumStatus.FormFunctionStatus.ButtonF4 Then
                Call MyBase.UtilityUIFormat.DataGridView_SetOneChecked(CType(sender, DataGridView), e.RowIndex)
            ElseIf MyBase.CurrentFormFunctionStatus <> FormBase.EnumStatus.FormFunctionStatus.ButtonF2 And MyBase.CurrentFormFunctionStatus <> FormBase.EnumStatus.FormFunctionStatus.ButtonF3 Then
                Call Me.BindEditData(CType(sender, DataGridView), e.RowIndex)
            End If
        End Sub

        ''' <summary>畫面資料顯示的狀態</summary>
        Private Sub DataGridViewCustomer_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridViewCustomer.CellFormatting
            If MyBase.CurrentFormFunctionStatus = FormBase.EnumStatus.FormFunctionStatus.FormClose Then Exit Sub
            Dim DataGridViewTemp As DataGridView = Nothing
            Dim ColorAlert As Color = Nothing   '畫面狀態顏色
            Try
                DataGridViewTemp = DirectCast(sender, DataGridView)
                If e.RowIndex Mod 2 = 1 Then
                    ColorAlert = DataGridViewTemp.AlternatingRowsDefaultCellStyle.BackColor '奇數列的顏色
                Else
                    ColorAlert = DataGridViewTemp.RowsDefaultCellStyle.BackColor            '偶數列的顏色
                End If
            Catch ex As Exception
                MyBase.AlertException(ex, "DataGridViewCustomer_CellFormatting")
            Finally
                MyBase.UtilityClearObject.ClearDataObject(DataGridViewTemp)
                MyBase.UtilityClearObject.ClearDataObject(ColorAlert)
            End Try
        End Sub

     ''' <summary>資料繫結</summary>
        Private Sub BindEditData(ByVal paramDataGridView As DataGridView, Optional ByVal paramRowIndex As Integer = -1)
            Dim DataGridViewRowTemp As DataGridViewRow = Nothing   '客戶資列及欄位名稱列
            '客戶資料
            Dim StringFieldName As String
            Dim StringFieldValue As String = " "
            Try
                If paramRowIndex >= 0 Then
                    DataGridViewRowTemp = paramDataGridView.Rows(paramRowIndex)
                Else
                    If paramDataGridView.CurrentRow IsNot Nothing Then
                        DataGridViewRowTemp = paramDataGridView.CurrentRow
                    End If
                End If

                For Each ControlTemp As Control In Me.PanelEdit.Controls
                    If ControlTemp.Tag IsNot Nothing Then
                        StringFieldName = ControlTemp.Tag.ToString
                        StringFieldValue = " "
                        If DataGridViewRowTemp IsNot Nothing Then
                            If paramDataGridView.Columns.Contains(StringFieldName) Then
                                StringFieldValue = DataGridViewRowTemp.Cells(StringFieldName).Value.ToString
                            End If
                        End If
                    End If
                    '欄位值               
                    If ControlTemp.GetType.FullName = GetType(TextBox).FullName Then
                        ControlTemp.Text = StringFieldValue
                    End If
                Next
            Catch ex As Exception
                MyBase.AlertException(ex, "BindEditData")
            Finally
                StringFieldName = Nothing
                StringFieldValue = Nothing
                DataGridViewRowTemp = Nothing
            End Try
            Me.ToolStripLabelQuery.Text = ConstTableNameChn & ": " & Me.TextBoxEditCustomerNo.Text
        End Sub

     

     

     

    這兩個問題有甚麼方法可以做到呢??

    小弟剛學VB不久...對語法還不是很了解> <




    • 已編輯 Qoo 2011年11月29日 上午 07:34
    2011年11月29日 上午 07:20

解答

所有回覆

  • 第一個問題   弄一個DataGridView_CellMouseClick

      DataGridView.CurrentCell.ColumnIndex

      DataGridView.CurrentCell.RowIndex

    上面兩個就能知道點在哪一行   哪一列

    在把DataGridView的那一行 列的值丟到textbox 就ok了

     

    第二個問題   平時  把下拉式選單給    disable      要開啟的話在enable

    combobox1.enable=false

    combobox1.enable=true

    其它就自己去運用了

    2011年11月29日 上午 08:38
  • 請使用DataBinding,就可以連動了吧!

    請參考以下的資訊!

    資料繫結 (Data Binding)(一) 簡單資料繫結


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2011年11月29日 上午 08:50
  • 用BindingSource做還算方便, 請參考

    上一筆、下一筆、第一筆、最末筆《BindingSource的應用 (1)》

    BindingNavigator《BindingSource的應用 (2)》


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年11月29日 上午 10:03
    版主
  •    Private Sub DataGridView1_CellMouseClick(ByVal sender As Object, ByVal e As DataGridViewCellMouseEventArgs) _
         Handles DataGridView1.CellMouseClick
            TextBox1.Text = DataGridView.CurrentCell.RowIndex
    請問這樣寫那裡錯了呢??
    問題是卡在DataGridView.CurrentCell
    (參照非共用成員需要物件參考)
    2011年11月29日 下午 02:53
  • 因為 DataGridView 是類別名稱, 你的物件名稱應該是 DataGridView1
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年11月29日 下午 03:33
    版主
  •    Private Sub DataGridView1_CellMouseClick(ByVal sender As Object, ByVal e As DataGridViewCellMouseEventArgs) _
         Handles DataGridView1.CellMouseClick
            TextBox1.Text = DataGridView.CurrentCell.RowIndex
    請問這樣寫那裡錯了呢??
    問題是卡在DataGridView.CurrentCell
    (參照非共用成員需要物件參考)


     

    i=DataGridView1.CurrentCell.RowIndex    '得到你現在點選的位置在哪一行

    j=DataGridView1.CurrentCell.ColumnIndex    '得到你現在點選的位置在哪一列

    textbox1.text=DataGridView1.Rows(i).Cells(j).Value()


    • 已編輯 x32 2011年11月30日 上午 05:19
    2011年11月30日 上午 05:11
  • Retrive a text from DatagridView into a Textbox in VB.NET

    http://social.msdn.microsoft.com/Forums/en-AU/vblanguage/thread/d2628347-b70c-4efa-ac30-1c0a6889a11b

     

    For example if u want to retreive the data of the current cell when you make a click on the datagridview:

     

    Private Sub DataGridView1_CellMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseClick  
            Me.textbox1.Text = Me.DataGridView1.CurrentCell.Value  
            ''or access to the cells of the current row
            ''me.DataGridView1.CurrentRow.Cells(Me.DataGridView1.CurrentCell.ColumnIndex - 1)
        End Sub 
    
    
    

     


    歡迎參觀我的Blog.NET菜鳥自救會

    2011年11月30日 上午 05:48
    版主