2011-02-18 18 views
2

次のコードは機能します(行は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 

欠落しているものはわかりません。リフレッシュは役に立たない。

+0

私は、データセットの行だけをフィルタリングすることに焦点を当てる必要があると思います。 – JeffO

答えて

1

私はDataRepeaterのTextboxとDatasourceのDataSourceの問題があると思います。

コードを少し修正しました。試してみてください。私のために働く。

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 

は、それが役立ちます:)

1

DefaultViewプロパティはそのIEnumerableあなたは、標準の結合構文を使用することができますDataRowViewアレイの上に列挙DataViewとして入力されると思います。しかし、Selectメソッドは、同じ方法でバインドできないDataRowオブジェクトの配列を返します。最も簡単な解決策はDataViewDataSourceプロパティに確実に渡すことです。

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プロパティを使用する必要はありませんので、注意してください。

+0

dataviewが必要な場所にエラーが発生するデータセットを適用しないでください。 – JeffO

+0

@ Jeff O - データセットを適用しているところはどこですか? 'checked'が真のとき、私は' DataView'をテーブルの中に使います。 'checked'がfalseのとき、私は' DataSet'から 'DataTable'を使用しています。 IIRCでは、「DataSet」に直接バインドすることも可能です。ほとんどのコントロールは、セットの最初のテーブルを単に引っ張ります。しかし、それは私がここでやっていることではありません。 – Thomas

+0

申し訳ありませんが(これはしばらく見ていませんでした)、私は自分のコードで意味しましたが、あなたは正しいです、それは適用されているデータセットではありません。 – JeffO

関連する問題