nyt1972 Ответов: 1

Заполнение datagridview из базы данных существующими столбцами, включая столбец combobox


Привет,

Я хотел заполнить datagridview из базы данных, datagridview имеет colums Product, Qty, Price, Total,Description

Столбец Product - это Combobox, в котором я хочу product_name как displayMember и product_id как ValueMember, но select sholud должен быть в соответствии с запросом.

Я попробовал ниже, но это не работает, я хочу это для обновления, как если бы пользователь хотел изменить продукт или кол-во и т. д.


Заранее спасибо.

Sorry if I did clearly described what I wanted to do becoz of my English, then I try to explain it once again.

I have mysql tables

product have fields product_id,product_name
dailysale have fields product_id,qty,price,total,description

I have a datagridview with having columns 1. Product, 2. Qty, 3. Price, 4. Total 5. Desc, and 6. billno

Table dailysale can retrieve product_name based on product_id

The Product Columns is a ComboBox in which the Display member is product_name and the value member is product_id, I save product_id in dailysale.

Now What I want is to that When a user wanted to edit any sale order, He enter a billno and the bill retrieves into the datagridview where I dont know how to retrieve the products in the combobox cell.

I tried the above code but in the below line it say object reference is not set to an instance of an object


Что я уже пробовал:

sql = "SELECT product.product_name,dailysale.product_id,dailysale.qty, dailysale.price, dailysale.total, dailysale.description FROM dailysale INNER JOIN product ON product.ID = dailysale.product_id WHERE billno ='" & txtbillno.Text & "'"
cmd = new MysqlCommand(sql,conn)
dr = cmd.excmd = New MySqlCommand(sqL, conn)
                dr = cmd.ExecuteReader

dim i as Integer = 0
 Do While dr.Read = True
i+=1
                    Dim dgvcc As New DataGridViewComboBoxCell
                    dgvcc = DirectCast(DataGridView1.Rows(DataGridView1.CurrentRow.Index).Cells(1), DataGridViewComboBoxCell)
                    Dim dt As DataTable = New DataTable

                    dt.Load(dr)
                With dgvcc
                        .DataSource = dt
                        .ValueMember = "product_id"
                        .DisplayMember = "product_name"
                        .Selected = ""
                End With
                    DataGridView1.Rows.Add(i, dgvcc.Value, dr("qty"), dr("price"), dr("total"), dr("description"))
                    y += 17
		Loop
					 DataGridView1.Height += y

Maciej Los

"но это не работает- ...совсем не описательно!

[no name]

Это становится пустой тратой нашего времени, чтобы постоянно отвечать людям, которые не слушают, что им говорят.

nyt1972

Хорошо большое спасибо

1 Ответов

Рейтинг:
0

Maciej Los

Вы не объяснили, что не так с вашим кодом. Я подозреваю, что DataGridViewComboBoxColumn данные не соответствуют данным в конкретной строке.

Я бы посоветовал прочитать это: DataGridViewComboBoxColumn.Свойство DataSource (System.Окна.Формы)[^]


MSDN писал:
Получение или установка этого свойства возвращает или задает свойство DataSource объекта, возвращаемого свойством CellTemplate. Установка этого свойства также устанавливает свойство DataSource для каждой ячейки столбца и обновляет отображение столбца. Чтобы переопределить указанное значение для отдельных ячеек, установите значения ячеек после установки значения столбца.


Удачи вам!