Vb.net 单击或选择DaTagridview中的单元格时,添加的行将消失
我在Dgw中为“求和”列添加了一行,但当我单击Dgw或选择某个单元格时,该行将消失 我正在使用Sqlite数据库 代码如下: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
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项的数据源。任何更多的信息都会有所帮助。谢谢