2013-07-11 2 views
0

gridviewcolums의 데이터 바인딩을 사용하여 데이터를 listview에 넣을 수있는 기사를 찾았지만 목록에서 해당 선을 선택하면이 데이터를 검색해야합니다. 나는 목록을 채우고 데이터를 검색하려고 시도해야한다. 지금까지 발견 한 바에 따라이 데이터를 listview에 넣는 방법이 매우 다르므로 제 문제는이 방법으로 XAML 형식으로 검색하는 올바른 방법을 모른다는 것입니다.GridView를 사용하여 ListView에서 데이터 가져 오기

private void Button_Click_1(object sender, RoutedEventArgs e) 
{ // This is When a button is clicked to populate the List 
    Operate op = new Operate(); 
    List<object> users = op.GetUser(); 
    if (users != null) 
    { 
     ResultsView.Items.Clear(); 
     foreach (UserPrincipal user in users) 
     { 
      ResultsView.Items.Add(new {Col1 = user.GivenName, Col2 = user.Surname, Col3 = user.SamAccountName}); 
     } 
    } 
} 
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ // This is When a line is selected and should get the info from the line 
    if (ResultsView.SelectedItem != null) 
    { 
     string sel = ResultsView.SelectedItem.Col1; 
    } 
} 

는 그리고 이것은 단지 몇 일 전에이로 시작하는 목록 어떤 이상한 형식 또는 오류에 대한 매우 죄송

<ListView 
    x:Name="ResultsView" 
    Margin="5,5,5,5" 
    SelectionMode="Single" 
    SelectionChanged="ListView_SelectionChanged"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Width="100" Header="H1" DisplayMemberBinding="{Binding Col1}"/> 
      <GridViewColumn Width="100" Header="H2" DisplayMemberBinding="{Binding Col2}"/> 
      <GridViewColumn Width="100" Header="H3" DisplayMemberBinding="{Binding Col3}"/> 
     </GridView> 
    </ListView.View> 
</ListView> 

에 대한 XAML입니다. 다음은 예상대로 목록이 채워지는 그림입니다.

+0

현재 겪고있는 문제점은 무엇입니까? 오류? 또한'//'는'\\\'가 아닌 주석을 만드는데 사용됩니다 :) – PoweredByOrange

+0

//를위한 Ty. 이 오류는 개체 ResultsView.SelectedItem.Col1이 개체에 Col1에 대한 defenition이 없다는 것을 나타내는 것입니다. – rhamilton

+0

오류 'object'에 'Col1'의 정의가없고 'object'유형의 첫 번째 인수를 허용하는 확장 방법 'Col1'을 찾을 수 없습니다 (사용 지시문이나 어셈블리 참조가 누락 되었습니까?) – rhamilton

답변

0

내 대답은 Travis J의 의견에 다소 있습니다. SelectedItem의 출력이 익명 형식이되지 않도록이 테이블을 다른 방식으로 만들어야한다는 것을 알고있었습니다. 그래서 테이블을 구성하는 방법을 다시했고 지금 DataTable을 사용하고 있습니다.

private void Button_Click_1(object sender, RoutedEventArgs e) 
{ 
    Operate op = new Operate(); 
    DataTable users = op.GetUser(); 
    if (users != null) 
    { 
     ResultsView.ItemsSource = users.DefaultView; 
    } 
} 
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 

    if (ResultsView.SelectedItem != null) 
    { 
     DataRowView line = ResultsView.SelectedItem as DataRowView; 
     string stuff = line.Row.ItemArray[2].ToString(); 

     MessageBox.Show(stuff); 
    } 
} 

이렇게하면 바인딩이 데이터 테이블의 경로를 찾을 수 있도록 XAML을 변경해야합니다.

<ListView 
    x:Name="ResultsView" 
    Margin="5,5,5,5" 
    SelectionMode="Single" 
    SelectionChanged="ListView_SelectionChanged"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Width="100" Header="H1" DisplayMemberBinding="{Binding Path=FirstName}"/> 
      <GridViewColumn Width="100" Header="H2" DisplayMemberBinding="{Binding Path=LastName}"/> 
      <GridViewColumn Width="100" Header="H3" DisplayMemberBinding="{Binding Path=UserName}"/> 
     </GridView> 
    </ListView.View> 
</ListView> 

나는 데이터 테이블을 만드는 방법을 직접 포함하지 않기로 결정했지만 가장 빠른 방법을 보여준 링크를 제공 할 것입니다.

http://www.dotnetperls.com/datatable

관련 문제