带有组合框的数据网格视图,从数据表中添加行

时间:2018-07-14 07:37:14

标签: vb.net datagridview datatable combobox

在数据网格视图中搜索和显示数据

Dim cmd As New OracleCommand("Select JV_CODE,JV_ACC_NAME,DEBIT,CREDIT From VOUCHER_DETAIL where VOUCHERNO =:Vno", sgcnn)

        cmd.Parameters.Add("@Vno", OracleDbType.NVarchar2).Value = txtJVNo.Text.ToString.Trim

        Dim daVD As New OracleDataAdapter(cmd)
        Dim dtVD As New DataTable()

        daVD.Fill(dtVD)
        dgvAccDetail.AutoGenerateColumns = False
        dgvAccDetail.DataSource = dtVD


        dgvAccDetail.Rows(0).Cells(0).Value = dtVD.Rows(0).Item("JV_CODE").ToString.Trim
        dgvAccDetail.Rows(0).Cells(1).Value = dtVD.Rows(0).Item("JV_ACC_NAME").ToString.Trim
        dgvAccDetail.Rows(0).Cells(2).Value = dtVD.Rows(0).Item("DEBIT").ToString.Trim
        dgvAccDetail.Rows(0).Cells(3).Value = dtVD.Rows(0).Item("CREDIT").ToString.Trim



    Catch ex As Exception

        MsgBox(ex.Message)

    End Try 

dtVD数据表中有两行,但结果显示只有一个我与此堆栈,有些可以告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

这样做的原因是您只分配了一行。您有两种选择:

首先,在网格上设置属性绑定后,下面的代码实际上并不是必需的。如果使用绑定,则将以这种方式获得更好的性能。这里没有GUI代码,但实际上应该在列上设置DataPropertyName字段。

    dgvAccDetail.Rows(0).Cells(0).Value = dtVD.Rows(0).Item("JV_CODE").ToString.Trim
    dgvAccDetail.Rows(0).Cells(1).Value = dtVD.Rows(0).Item("JV_ACC_NAME").ToString.Trim
    dgvAccDetail.Rows(0).Cells(2).Value = dtVD.Rows(0).Item("DEBIT").ToString.Trim
    dgvAccDetail.Rows(0).Cells(3).Value = dtVD.Rows(0).Item("CREDIT").ToString.Trim

如果您坚持手动分配单元格值,则不能只执行第0行(即第一行)。您需要循环执行所有行。

For i as Integer = 0 to dtVD.Rows.Count - 1

    dgvAccDetail.Rows(i).Cells(0).Value = dtVD.Rows(i).Item("JV_CODE").ToString.Trim
    dgvAccDetail.Rows(i).Cells(1).Value = dtVD.Rows(i).Item("JV_ACC_NAME").ToString.Trim
    dgvAccDetail.Rows(i).Cells(2).Value = dtVD.Rows(i).Item("DEBIT").ToString.Trim
    dgvAccDetail.Rows(i).Cells(3).Value = dtVD.Rows(i).Item("CREDIT").ToString.Trim


Next