2011-02-18 4 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의 텍스트 상자 및 데이터 소스의 데이터 소스로 인해 문제가 발생한다고 생각합니다.

코드를 약간 수정했습니다. 시도해보십시오. 나를 위해 일합니다.

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 개체의 배열을 반환합니다. 가장 간단한 해결책은 DataSource 속성에 DataView을 전달하는 것입니다.

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

데이터 뷰가 필요한 곳에 데이터 세트를 적용하면 오류가 발생해야합니까? – JeffO

+0

@ Jeff O - 데이터 세트를 적용하는 위치는 어디에서 볼 수 있습니까? 'checked'가 true 일 때, 나는 세트에서'DataView'를 사용하고 있습니다. 'checked'가 false이면'DataSet'에서'DataTable'을 사용하고 있습니다. IIRC에서는 'DataSet'에 직접 바인드 할 수도 있습니다. 대부분의 컨트롤은 단순히 세트의 첫 번째 테이블을 가져옵니다. 그러나, 내가 여기서하고있는 것이 아닙니다. – Thomas

+0

죄송합니다 (잠시 보지 않으 셨습니다.), 제 코드에서는 의미가 있었지만, 당신이 맞습니다. 적용되는 데이터 세트가 아닙니다. – JeffO

관련 문제