Получить значение первичного ключа выбранного элемента строки в DataGrid с помощью WPF

У меня есть DataGrid, привязанный к таблице базы данных customer.

Мне нужно выбрать значение ID первичного ключа из таблицы базы данных выбранной строки в DataGrid.

Как это сделать ? пожалуйста помоги ..


person Community    schedule 08.10.2013    source источник
comment
Надеюсь, этот вопрос ясен!   -  person    schedule 08.10.2013
comment
Вы используете ORM framework? Entity Framework? NHibernate?   -  person Omri Btian    schedule 08.10.2013
comment
Я до сих пор не использую никаких фреймворков .... я просто создаю приложение, управляемое базой данных (sqlite), с использованием элементов управления wpf ...   -  person    schedule 08.10.2013
comment
Загрузите свой код того, как вы привязываете сетку к базе данных   -  person Omri Btian    schedule 08.10.2013
comment
sqlitecon.Open (); строка Query = Выберите Card_Number, Clients_Title, Address_Current, Phone_Number, Mobile_Number из Customer_New; SQLiteCommand createCommand = new SQLiteCommand (запрос, sqlitecon); createCommand.ExecuteNonQuery (); SQLiteDataAdapter dataAdp = новый SQLiteDataAdapter (createCommand); DataTable dt = новая таблица данных (Customer_New); dataAdp.Fill (dt); datagrid_cindex.ItemsSource = dt.DefaultView; dataAdp.Update (dt); sqlitecon.Close ();   -  person    schedule 08.10.2013


Ответы (1)


Вы можете добавить ID в оператор выбора

string Query = "Select ID,Card_Number,Clients_Title,Address_Current,Phone_Number,Mobile_Number from Customer_New "; 

Поскольку вы хотите скрыть столбец ID, а ваши столбцы создаются автоматически, зарегистрируйтесь в событии AutoGeneratingColumn вашей сетки.

datagrid_cindex.AutoGeneratingColumn += OnAutoGenetingColumns;

В OnAutoGenetingColumns скрыть столбец идентификатора

private void OnAutoGenetingColumns(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    if (e.Column.Header.ToString() == "ID")
        e.Column.Visibility = System.Windows.Visibility.Collapsed;
}

Если вы хотите получить идентификатор выбранной строки, используйте:

var selectedRow = datagrid_cindex.SelectedItem as DataRowView;
var id = selectedRow["ID"];

Надеюсь это поможет

person Omri Btian    schedule 08.10.2013
comment
В качестве примечания я должен сказать, что вам действительно следует использовать некоторую структуру ORM. Привязка пользовательского интерфейса непосредственно к базе данных - это очень тесная связь, которой обычно хотелось бы избежать ... - person Omri Btian; 08.10.2013
comment
Спасибо ..... Это работает на 100% ..... Можете ли вы поделиться со мной хорошей ссылкой на учебник или видеоурок для изучения структуры ORM от начала до конца .... - person ; 08.10.2013
comment
Я использую NHibernate с Конфигурация FluentNHibernate как ORM. Это отличный учебник, чтобы вы начали. Если мое сообщение ответило на ваш вопрос, отметьте его как отвеченный. Спасибо :) - person Omri Btian; 08.10.2013
comment
Это кажется очень неуклюжим, учитывая, что большинство сеток предоставляют либо фактическое свойство строки, которое является PK, либо глобальное свойство для имени строки PK. - person ProfK; 21.02.2015
comment
@ProfK Но разве это не так, только если вы используете EF, ORM и т. Д. Непонятно, какой механизм связывания данных использует OP. - person nam; 29.05.2020