2013-07-11 82 views
0

我發現了一些文章來獲取數據將被放入列表視圖與數據綁定gridviewcolums但我需要檢索此數據時,從列表中選擇一行,這是代碼我必須填寫清單並「嘗試」檢索數據。 據我發現,請有非常不同的方式將這些數據放入列表視圖中,我假設我的問題是我不知道用這種方式在XAML中格式化的正確方法來檢索它。C#從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'(您是否缺少using指令或程序集引用?) – 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