Как получить выбранное значение ListView, когда данные поступают с SQL Server (WPF) - PullRequest
2 голосов
/ 19 января 2011

Я новичок в C # и WPF, так что, надеюсь, это простая проблема.

У меня есть просмотр списка, который извлекает данные из таблицы SQL Server.

<ListView Width="450" Margin="10" Grid.Row="1" ItemsSource="{Binding Path=Table}" Name="FIData" SelectionChanged="FIData_SelectionChanged">
       <ListView.View>
         <GridView>
           <GridViewColumn Header="FI #" DisplayMemberBinding="{Binding Path=Id}"/>
           <GridViewColumn Header="FI Short Name" DisplayMemberBinding="{Binding Path=ShortName}"/>
           <GridViewColumn Header="FI Long Name" DisplayMemberBinding="{Binding Path=LongName}"/>
           <GridViewColumn Header="Last Load Date" DisplayMemberBinding="{Binding Path=MostRecentEffectiveDate}"/>
         </GridView>
       </ListView.View>
    </ListView>

SqlConnection con = new SqlConnection();
    SqlDataAdapter ad = new SqlDataAdapter();
    SqlCommand cmd = new SqlCommand();

    string strSql = "SELECT Id, ShortName, LongName, MostRecentEffectiveDate FROM Institutions";


public void BindData()
    {
        cmd.CommandText = strSql;
        ad.SelectCommand = cmd;
        con.ConnectionString = "Data Source=DEVDB\\ABC; Initial Catalog=Cat1; Integrated Security=True";
        cmd.Connection = con;
        DataSet ds = new DataSet();
        ad.Fill(ds);
        FIData.DataContext = ds.Tables[0].DefaultView;
        con.Close();
    }

private void Button_Click(object sender, RoutedEventArgs e)
    {
        BindData();
    }

При нажатии кнопки вызывается метод BindData, и мой вид списка заполняется просто отлично. Моя проблема в том, что я не знаю, как извлечь значения данных из выбранного элемента списка.

Во всех других примерах пользователи либо заполняют свои данные из свойств в коде C # или XML, либо из какого-либо другого источника. Я думаю, что, возможно, одна из моих проблем в том, что я не совсем правильно понимаю объекты, но я надеялся, что кто-то может показать мне, как я получаю конкретные значения из выбранного списка. Я хочу использовать одно из этих значений позже.

Спасибо

Jason

1 Ответ

0 голосов
/ 19 января 2011

Здесь, когда вы делаете:

FIData.DataContext = ds.Tables[0].DefaultView;

, он отображает фактическую таблицу данных с виртуальными свойствами, которые можно использовать для таких сценариев привязки данных, как ваш.* Но чтобы ответить на ваш вопрос о том, как вы можете получить значения данных, я думаю, вы довольно близки, потому что у вас есть событие FIData_SelectionChanged для вашего списка.В этом случае:

private void FIData_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
  var myListView = sender as ListView;
  if(myListView != null)
  {
    var selectedItem = myListView.SelectedItem;

    //selectedItem should have an array, which contains data values for the bound object.
  }
}

вы должны проверить selectedItem выше в отладчике и посмотреть, какие данные он содержит.

...