Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 单击或选择DaTagridview中的单元格时,添加的行将消失_Vb.net_Datagridview_Cell - Fatal编程技术网

Vb.net 单击或选择DaTagridview中的单元格时,添加的行将消失

Vb.net 单击或选择DaTagridview中的单元格时,添加的行将消失,vb.net,datagridview,cell,Vb.net,Datagridview,Cell,我在Dgw中为“求和”列添加了一行,但当我单击Dgw或选择某个单元格时,该行将消失 我正在使用Sqlite数据库 代码如下: Private Sub ComboPontes_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles ComboPontes.SelectionChangeCommitted Dim dbPonte As LaPonte = CType(ComboPontes.Selecte

我在Dgw中为“求和”列添加了一行,但当我单击Dgw或选择某个单元格时,该行将消失

我正在使用Sqlite数据库

代码如下:

    Private Sub ComboPontes_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles ComboPontes.SelectionChangeCommitted

    Dim dbPonte As LaPonte = CType(ComboPontes.SelectedItem, LaPonte)
    Dim dt = Opst.NetSevragesByPonte(dbPonte.PonteID)
    If dbPonte.PonteID > -1 Then
        _bsSEVPonte1.DataSource = dt
        Dgd1.DataSource = _bsSEVPonte1
        For Each column As DataGridViewColumn In Dgd1.Columns
            column.HeaderText = column.HeaderText.SplitCamelCase()
        Next
        Dgd1.ExpandColumns()

        Dim Sum As Integer = 0
        Dim Sum1 As Integer = 0
        ' Sum
        For i As Integer = 0 To dt.Rows.Count - 1
            Sum += If(Not Convert.IsDBNull(Dgd1.Rows(i).Cells(3).Value), Convert.ToInt32(Dgd1.Rows(i).Cells(3).Value), 0)
            Sum1 += If(Not Convert.IsDBNull(Dgd1.Rows(i).Cells(4).Value), Convert.ToInt32(Dgd1.Rows(i).Cells(4).Value), 0)
        Next
        Dim dr As DataRow = dt.NewRow
        dt.Rows.Add(dr)
        For Each col As DataColumn In dt.Columns
            col.[ReadOnly] = False
        Next
        Dgd1("Race", Dgd1.Rows.Count - 1).Value = "TOTAL"
        Dgd1("OiseauxSevrés", Dgd1.Rows.Count - 1).Value = Sum
        Dgd1("NetOiseauxSevrés", Dgd1.Rows.Count - 1).Value = Sum1
端接头


非常感谢。

我认为问题在于:

Dgd1("Race", Dgd1.Rows.Count - 1).Value = "TOTAL"
Dgd1("OiseauxSevrés", Dgd1.Rows.Count - 1).Value = Sum
("NetOiseauxSevrés", Dgd1.Rows.Count - 1).Value = Sum1
您的datagridview似乎绑定到了一个datatable,但这里您试图直接更新网格。所以你的改变不会持续下去。 您应该做的是更新数据表,或者更好的是,您可以使用

要添加新行,可以执行以下操作:

Dim dr As DataRow = dt.NewRow()
With dr
    .Item("Field1") = "Value1"
    .Item("Field2") = "Value2"
    .Item("Field3") = "Value3"
End With
dt.Rows.Add(dr)
或事件更短:为行中的每个字段添加值:

dt.Rows.Add("Value1", "Value2", "Value3")
但是用户可以单击列来更改排序顺序,甚至可以拖动列来更改其位置。因此,您可能需要设计一些技巧来保持所需的布局。可能是隐藏的排序键或其他东西。不过,我可能会将小计排除在数据网格之外。为什么不使用标签或表单底部的状态栏

当基础数据发生变化时,我会重新计算小计。例如,您可以使用


如果您试图对列求和,该函数可能会派上用场。

很难看到您在这里做什么。您正在设置一个“LaPonte”类型,我找不到任何提及,然后您正在将datagrid重置为单独类中的datatable(?),然后在执行任何工作之前重置LaPonte项的数据源。任何更多的信息都会有所帮助。谢谢