• 0

كيف أمرر قيمة TextBox إلى DataGridView على Vb.net؟

أتوفر على حقل TextBox وDataGridView على تطبيق بلغة Vb.net، حيث بعد إدخال قيمة في حقل النص والضغط على زر، أريد أن تضاف القيمة المُدخلة إلى جدول datagridview، وهذه هي شيفرة التطبيق:

Public Class frm_customer_orderproduct
    Dim current_id As String
    Private Sub frm_customer_orderproduct_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'Dim regDate As Date = Date.Today()

        lbl_user.Text = "Hi, " & custName & "!"

        refresh_grid()
        get_current_id()
    End Sub
    Private Sub refresh_grid()
        Dim mysql As String = "SELECT FLD_PRODUCT_ID, FLD_PRODUCT_NAME, FLD_PRODUCT_PRICE FROM TBL_PRODUCTS"
        Dim mydatatable As New DataTable
        Dim myreader As New OleDb.OleDbDataAdapter(mysql, myconnection)
        myreader.Fill(mydatatable)
        grd_product.DataSource = mydatatable
    End Sub
    Private Sub clear_fields()
        txt_id.Text = ""
        txt_name.Text = ""
        txt_price.Text = ""
        txt_qty.Text = ""
    End Sub
    Private Sub get_current_id()
        Dim current_row As Integer = grd_product.CurrentRow.Index
        current_id = grd_product(0, current_row).Value

        txt_id.Text = current_id
        txt_name.Text = grd_product(1, current_row).Value
        txt_price.Text = grd_product(2, current_row).Value
    End Sub

    Private Sub grd_product_CellClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grd_product.CellClick
        get_current_id()
    End Sub

    Private Sub btn_add_Click(sender As System.Object, e As System.EventArgs) Handles btn_add.Click
        If txt_qty.Text = "" Then
            MsgBox("Please insert quantity")
        Else
            Dim dt As New DataTable
            Dim dr As DataRow

            dt.Columns.Add("Product ID")
            dt.Columns.Add("Product Name")
            dt.Columns.Add("Price")
            dt.Columns.Add("Quantity")
            dr = dt.NewRow
            dr("id") = txt_id.Text
            dr("name") = txt_name.Text
            dr("price") = txt_price.Text
            dr("qty") = txt_qty.Text
            dt.Rows.Add(dr)
            grd_order.DataSource = dt

        End If

    End Sub
End Class

xPq9F.thumb.jpg.cdf6f2c03aba360e09c2b642

لكن أحصل على خطأ مبيّن في الصورة التالية:

s71jf.thumb.jpg.ff7d12a7e8add3054e5c10ab

ما نوع المُشكل المصادف؟ وكيف أحلّه؟

تمّ تعديل بواسطة سعاد

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

من الواضح أن اسم Id كحقل غير معترف به من قبل dt، لذا وجب عليك استعمال أسماء حقول صحيحة متواجدة بقاعدة البيانات، حتى لا تقع في هذا الخطأ، مثل:

dr("Product ID")=
dr("Product Name")=
dr("Price")=
dr("Quantity")=

أو يمكننا استعمال القيم الترتيبية للحقول:

 dr(0)=
    dr(1)=
    dr(2)=
    dr(3)=

ومن وجهة نظر، أن تستعمل هذه الطريقة لربط قيم DataGridView [قيم لحقول نصية من نوع TextBox، بهذا الشكل:

If Trim(txt_qty.Text) = "" Then
            MsgBox("Please insert quantity")
        Else
            Dim rnum As Integer = datagridviewname.Rows.Add()
            datagridviewname.Rows.Item(rnum).Cells("name_of_productid_column").Value = txt_id.Text
            datagridviewname.Rows.Item(rnum).Cells("name_of_productname_column").Value = txt_name.Text
            datagridviewname.Rows.Item(rnum).Cells("name_of_price_column").Value = txt_price.Text
            datagridviewname.Rows.Item(rnum).Cells("name_of_qty_column").Value = txt_price.Text
End If

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن