我在新工作中有一个培训项目,这是一个非常小但却至关重要的挫折。
我有一个datagridview控件绑定到从xml文件读取的数据集。它有3列:项目,价格,卡路里。我应该计算价格和卡路里的平均值,并将它们放在从xml读入的条目下面的行中。这样可以正常工作,除了当我用平均值填充底行时,行保持未提交状态,当用户选择行时,值将消失。如果手动在该行中键入一个条目,它将按预期提交,并显示一个新的未提交的行。如何从底行上以编程方式放置的计算条目获得相同的行为?由于dgview是数据绑定,我不能做dgview.rows.add或类似的东西。 我的基本上是这样的:
Private Sub PopulateDGView(ByVal sFilePath As String)
Dim dgview As New DataGridView
Dim ds As New dataset
Dim dPriceAvg As Double = 0
Dim dCaloriesAvg As Double = 0
ds.readxml(sFilePath)
dgview.datasource = ds
dgview.DataMember = "food"
'[Here I loop through the rows, sum the values and divide by the number of rows to get
'the average values for the columns then write the following]
dgview.Rows(dgview.Rows.GetLastRow(DataGridViewElementStates.Displayed)). _
Cells("Item").Value = "Average"
dgview.Rows(dgview.Rows.GetLastRow(DataGridViewElementStates.Displayed)). _
Cells("Price").Value = dPriceAvg.ToString
dgview.Rows(dgview.Rows.GetLastRow(DataGridViewElementStates.Displayed)). _
Cells("Calories").Value = dCaloriesAvg.ToString
End Sub
这会将平均值放在未提交的行上,这是唯一可用的未填充行。我认为这会导致出现一个新行,但事实并非如此。平均行保持未提交状态,正如我所提到的,当选择行时,该行上的所有数据都会消失。如何强制该行提交并在其下方显示一个新的未提交行?正如一些额外的信息,我不能使用microsoft.visualbasic库。任何帮助表示赞赏。提前谢谢。
答案 0 :(得分:0)
是的,您对数据进行数据绑定的原因是您希望更改该项目以显示在设计视图中和/或能够手动将数据添加到源。
因此,不是以编程方式向显示数据集的项添加内容,而是将数据添加到数据集,然后显示数据集。
ds.tables(0).Rows.Add()