2013-04-26 2 views
0

DataGrid에 데이터를 채울 수 없습니다. XAML을 처음 사용했습니다. OracleDataReader 개체를 사용 중입니다.이 개체를 DataGrid에 추가하고 싶습니다. 먼저 여기에 XAML이 있습니다.XAML의 DataGrid에 데이터를 추가 할 때 업데이트되지 않습니다.

<DataGrid Name="grdResults" FontSize="25" AutoGenerateColumns="False" CanUserResizeRows="False" DockPanel.Dock="Top" IsReadOnly="True"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Path=extName}" Header="Name" Width="*" /> 
     <DataGridTextColumn Binding="{Binding Path=location_note}" Header="Location" Width="*" /> 
     <DataGridTextColumn Binding="{Binding Path=crate_no}" Header="Crate" Width="*"/> 
    </DataGrid.Columns> 
</DataGrid> 

여기 뒷쪽에 있습니다. 작동하는 것처럼 보이지만 그렇지 않은 것 같습니다. 필드의 이름은 XAML에 바인딩 된 것과 동일합니다. RS는 인구 밀도가 높은 OracleDataReader입니다.

Dim dt As New DataTable 
dt.Load(rs) 
grdResults.DataContext = dt.DefaultView 

내가 잘못하고있는 것을 누구든지 볼 수 있습니까?

편집 :

나는 그것이 작동시킬 수 있었다. 아마도 가장 좋은 방법은 아니지만 나를 위해 일합니다. 내가 XAML에서 datagrid.columns 및 차일을 꺼내서

grdResults.Columns.Add(New DataGridTextColumn() With { _ 
     .Header = "Name", _ 
     .Binding = New Binding(String.Format("[{0}]", "extName"))}) 

    grdResults.Columns.Add(New DataGridTextColumn() With { _ 
     .Header = "Location", _ 
     .Binding = New Binding(String.Format("[{0}]", "location_note"))}) 

    grdResults.Columns.Add(New DataGridTextColumn() With { _ 
     .Header = "Crate", _ 
     .Binding = New Binding(String.Format("[{0}]", "crate_no"))}) 
+0

WPF 클라이언트 측에서'System.Data' 클래스 사용을 완전히 금지합니다. 데이터를 보관할 적절한 데이터 모델을 만들고 응용 프로그램 논리를 정의하는 적절한 ViewModels를 만듭니다. –

+0

하지만 그렇게했다면 그리드에 표시하는 것이 가능할까요? 물론 – Loogawa

+0

입니다. WPF는 winforms보다 훨씬 더 유용합니다. 나는 당신의 질문을 이해하지 못합니다. –

답변

2

실제로 데이터 컨텍스트를 dt.Load (RS) 사이의 배후에 넣고 및 설정, 당신은 권리를 AutoGeneratedColumn = false 당신이 원하는 않은 경우 데이터베이스의 일부 열을 건너 뛰려면 먼저 Columns.Item(x).Visibility = Windows.Visibility.Hidden을 설정하여 모두 숨기고 선택된 것만 표시하면됩니다. 행을 건너 뛰려면

당신은 그들을 제거 할 수 있습니다 DataView

또 다른 (더 나은) 방법을 (사용자 정의 데이터 수집 방법을 당신이하고 싶은 경우에, 볼에 대해 별도의 DataView를 생성하고 제공하는 것이 더 좋습니다) 별개의 행을 무효화하는 방법은 다음과 같습니다. here

관련 문제