none
checkbox ใน datagrid กดไม่ได้ ไม่มีเครื่องหมาย ถูก เวลาติ๊ก (General question) RRS feed

  • คำถาม

  • ผมต้องการให้เมื่อเราติ๊กที่ checkbox แล้ว สามารถเก็บข้อมูลลงใน column customer_ID ได้ เก็บลงในตัวแปร IDX ครับ

    ผมจะต้องแก้ไขอย่างไรครับ

    Dim chkColumnAsNew DataGridViewCheckBoxColumn()

    chkColumn.Name = "check"

    chkColumn.Width = 50

    chkColumn.DataPropertyName = "check"

    chkColumn.HeaderText = "check"

    chkColumn.DisplayIndex = 0

    lstData.Columns.Add(chkColumn)

    SQL = "SELECT * FROM customer;"

    Call sqlreadqry(SQL)

    lstData.DataSource = tmpTable

    EndSub

    PrivateSub lstData_CellContentClick(ByVal sender As System.Object,ByVal eAs System.Windows.Forms.DataGridViewCellEventArgs)Handles lstData.CellClick

    Dim chkAsBoolean =True

    For iAsInteger = 0To lstData.RowCount - 1

    chk = lstData.Rows(i).Cells("check").Value

    If (chk =True)Then

    IDX = lstData.Rows(i).Cells("customer_ID").Value

    EndIf'

    Next

    EndSub

    EndClass


    Supa Sethasiripong [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    20 พฤษภาคม 2554 2:09
    ผู้ดูแล

คำตอบ

  • ปัญหา คือ ทุกครั้งที่คลิ๊กที่ checkbox จะ return ค่าเป็น false ตลอด
    ซึ่งโดยปกติแล้ว
    DataGridView จะไม่รับข้อมูล จนกว่าจะย้ายค่าไปเก็บไว้อีกที่นึง
    ดังนั้น ถ้าอยากจะตรวจสอบค่าของ
    checkbox changed value ต้อง submit ค่า แบบ manual ค่ะ

     

     Private Sub dataGridView1_CellContentClick(ByVal sender As ObjectByVal e As DataGridViewCellEventArgs)

            If dataGridView1.IsCurrentCellDirty Then

                dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)

            End If

     

            Dim dr As DataGridViewRow = dataGridView1.Rows(e.RowIndex)

            

            If dr.Cells(e.ColumnIndex).Value IsNot Nothing AndAlso Boolean.Parse(dr.Cells(e.ColumnIndex).Value.ToString()) = True Then

                'Cells[e.ColumnIndex] is the cell we have added checkbox

                MessageBox.Show("Rows " + dr.Index & " selected")

            End If

           

    ศึกษาข้อมูลเพิ่มเติม

    http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.currentcelldirtystatechanged.aspx

    http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/8b4695a4-d954-41f7-b12c-55e2e7b8c8ea


    Supa Sethasiripong [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • ทำเครื่องหมายเป็นคำตอบโดย supa_sModerator 23 พฤษภาคม 2554 4:50
    20 พฤษภาคม 2554 2:09
    ผู้ดูแล