Vb.net 数据集上的筛选器清除所有绑定控件

Vb.net 数据集上的筛选器清除所有绑定控件,vb.net,winforms,filter,Vb.net,Winforms,Filter,下面的代码起作用(行由select表达式过滤),但是datarepeater中的所有控件都是空的。当设置为.DefaultView时,所有记录都会返回,所有控件都有其值 Private Sub CheckBox_FilterApplied_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox_FilterApplied.CheckedChanged If Ch

下面的代码起作用(行由select表达式过滤),但是datarepeater中的所有控件都是空的。当设置为.DefaultView时,所有记录都会返回,所有控件都有其值

       Private Sub CheckBox_FilterApplied_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox_FilterApplied.CheckedChanged
    If CheckBox_FilterApplied.Checked Then
        ' RichTextBox_Notes.DataBindings.Add("Text", dsTransactions.Tables("TransactionHeader"), "Note")
        DataRepeater_Transactions.DataSource = dsTransactions.Tables("TransactionHeader").Select("Applied = 0")

        DataRepeater_Transactions.Refresh()
    Else
        DataRepeater_Transactions.DataSource = dsTransactions.Tables("TransactionHeader").DefaultView

    End If
End Sub

看不出少了什么。刷新没有帮助。

我认为问题是因为文本框的数据源和DataRepeater的数据源

我稍微修改了代码,请尝试一下。对我有用

Dim dt As New DataTable
dt.Columns.Add("Col1")
dt.Columns.Add("Col2")
dt.Columns.Add("Col3")


For index = 1 To 10
    Dim dr As DataRow = dt.NewRow()
    dr("Col1") = index.ToString()
    dr("Col2") = index.ToString()
    dr("Col3") = index.ToString()
    dt.Rows.Add(dr)
Next

Dim dv As DataView = New DataView(dt, "Col1 >= 8", "", DataViewRowState.CurrentRows)

TextBox1.DataBindings.Add(New Binding("Text", dv, "Col3"))
DataRepeater1.DataSource = dv

希望它能有所帮助:)

DefaultView
属性键入为
DataView
,其
IEnumerable
枚举在
DataRowView
数组上,使您能够使用标准绑定语法。但是,
Select
方法返回一个不能以相同方式绑定的
DataRow
对象数组。最简单的解决方案是确保将
DataView
传递给
DataSource
属性

If CheckBox_FilterApplied.Checked Then
    Dim dt As DataTable = dsTransactions.Tables("TransactionHeader")
    Dim dv As DataView = New DataView(dt, "Applied = 0", "", DataViewRowState.CurrentRows)
    DataRepeater_Transactions.DataSource = dv

Else
    DataRepeater_Transactions.DataSource = dsTransactions.Tables("TransactionHeader")

End If

还注意到,它可以直接绑定到
DataTable
,不需要显式使用
DefaultView
属性,因为默认情况下会使用该属性。

我想我只需要关注筛选数据集行。在需要数据视图的地方应用数据集不应该导致错误吗?@Jeff O-你看到我在哪里应用数据集?当
选中时
为true,我正在集合中的表中使用
数据视图
。当
选中时
为false,我使用的是来自
数据集的
数据表
。IIRC,甚至可以直接绑定到
数据集
。大多数控件只需拉动集合中的第一张桌子。但是,这不是我在这里要做的。很抱歉(有一段时间没有看这个了),我的意思是在我的代码中,但你是对的,它不是应用的数据集。