【问题标题】:Adding rows to a DataGrid with a Sub使用 Sub 将行添加到 DataGrid
【发布时间】:2014-07-17 00:03:27
【问题描述】:

我是 vb.net 的新手

所以我要做的是向数据网格添加行。我已经能够通过添加以下内容来实现这一点:

Public Class X

 Public Sub Button_Click(sender As Object, e As RoutedEventArgs)
    InitializeComponent()
    Dim items As New List(Of reportLine)()
    listview1.ColumnWidth = New DataGridLength(240)
    items.Add(New reportLine() With {.Items = "Total Project Funding", .Amount = 42.0})
    items.Add(New reportLine() With {.Items = "Sammy Doe", .Amount = 7})
    items.Add(New reportLine() With {.Items = "Sammy Doe", .Amount = 7})
    items.Add(New reportLine() With {.Items = "Sammy Doe", .Amount = 7})
    items.Add(New reportLine() With {.Items = "Sammy Doe", .Amount = 99})
    datagrid1.ItemsSource = items
End Sub
Private Sub rptLine(ByRef rptItem As String, ByRef rptAmount As Double)
    Dim items As New List(Of reportLine)()
    items.Add(New reportLine() With {.Items = rptItem, .Amount = rptAmount})
    datagrid1.ItemsSource = items
End Sub

End Class

Public Class reportLine
  Public Property Items() As String

  Public Property Amount() As Integer

End Class

我想要做的是能够像这样在按钮点击事件中添加一行

rptLine("Report Line", 450)
rptLine("Report Line", 450)
rptLine("Report Line", 450)

我意识到每次调用 rptLine Sub 时都会创建 Itemsource 的新实例。我已经尝试了很多方法来让它发挥作用,但每一种都遇到了障碍。

提前感谢您的帮助。

【问题讨论】:

  • 您使用的是什么版本的 Visual Studio?您的对象称为 ListView1,但您谈论的是 GridView,我在 VS 2010 中没有看到。另外,您说您已经尝试了很多东西,但请分享更多细节 - 分享您的研究对每个人都有帮助。告诉我们您尝试了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见how to ask
  • 至少有很多问题,很难知道从哪里开始。但我会尝试:a) 这是 WinForms 还是 WebForms? b) 为什么是 Datagrid 与 DataGridView? c) 它真的是 DataGrid 还是 ListView? d) 为什么在点击事件中出现InitializeComponent(参见“a”)? e) 为什么所有列表数组(包含更多数组?) f) 甚至编译或运行?

标签: vb.net datagrid


【解决方案1】:

你在使用 ListView 吗?

Private Sub rptLine(ByRef rptItem As String, ByRef rptAmount As Double)
    Dim listItem As ListViewItem = ListView1.Items.Add(rptItem)
    listItem.Subitems.Add(rptAmount)
End Sub

您使用的是 DataGridView 吗?

Private Sub rptLine(ByRef rptItem As String, ByRef rptAmount As Double)
    Dim row As DataGridViewRow = DataGridView1.Rows(DataGridView1.Rows.Add())
    With row
        .Cells(column1Name.Name).Value = rptItems
        .Cells(column2Name.Name).Value = rptAmount
    End With
End Sub

您可能可以进一步简化这些,但这应该会给您基本的想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2011-06-21
    • 1970-01-01
    相关资源
    最近更新 更多