Элемент DataGrid свойство selecteditems не работает в WPF с#
Мне нужно удалить выбранную строку из datagrid, а также из datatable. Я попробовал этот код, но он не удаляется.
компонента DataGrid.Возвращает значение null, свойство selecteditems. Таким образом, он не выполняет цикл Foreach
Что я уже пробовал:
Код для удаления строки из datagrid и datatable
Меня зовут экземпляр DataGrid DataGrid с
<pre>private void button_Click_1(object sender, RoutedEventArgs e) { string db = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source =C:\Users\Lavanya\Documents\BMDatabase.accdb;Persist Security Info=False"; OleDbConnection oledb = new OleDbConnection(db); OleDbCommand olecmd = new OleDbCommand("Select * From ACTOR", oledb); try { OleDbDataAdapter oleda = new OleDbDataAdapter(); oleda.SelectCommand = olecmd; DataTable dbtable = new DataTable(); oleda.Fill(dbtable); //BindingSource bsource = new BindingSource(); //bsource.DataSource = dbtable; dataGrid.ItemsSource = dbtable.DefaultView; oleda.Update(dbtable); int drow = dbtable.Rows.Count; int dcolumn = dbtable.Columns.Count; // System.Windows.MessageBox.Show(drow.ToString("G")); // System.Windows.MessageBox.Show(dcolumn.ToString("G")); //prepare the list of rows that need to delete List<DataRow> listOfRowsToDelete = new List<DataRow>(); foreach (DataRowView drRow in this.dataGrid.SelectedItems) { listOfRowsToDelete.Remove(drRow.Row); } //delete all the rows from the datatable foreach (DataRow drRow in listOfRowsToDelete) { dbtable.Rows.Remove(drRow); } // if (dataGrid != null) // { // int selectedIndex = dataGrid.SelectedIndex; // dbtable.Rows.RemoveAt(selectedIndex); // bsource.RemoveAt(selectedIndex); //var row = dbtable.Rows[selectedIndex]; //row.Delete(); //oleda.Update(dbtable); // System.Windows.MessageBox.Show(selectedIndex.ToString("G")); // } //else // { // if (dataGrid.SelectedItems.Count >= 1) //{ // while (dataGrid.SelectedCells.Count > 0) //{ // int selectedIndex = dataGrid.SelectedIndex; // dbtable.Rows.RemoveAt(selectedIndex); // bsource.RemoveAt(selectedIndex); // var row = dbtable.Rows[selectedIndex]; // row.Delete(); // oleda.Update(dbtable); // } //} // } } catch (Exception ex) { System.Windows.MessageBox.Show(ex.Message); } }
<pre><DataGrid x:Name="dataGrid" ItemsSource="{Binding Properties}" SelectedItem="{Binding SelectedProperty,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Height="238" Margin="10,120,0,0" VerticalAlignment="Top" Width="733" />
Gerry Schmitz
Загрузка, а затем сразу же ожидание правильного "выбранного элемента", не будет работать.
Где здесь "пользователь"?
Priya Karthish
Моя таблица с именем Author загружается в datagrid.Затем я выбираю строку в datagrid. Затем я пытаюсь нажать кнопку,чтобы вызвать удаление, но она не удаляется.
Richard Deeming
Потому что, как уже объяснил Джерри, когда вы нажимаете кнопку, вы немедленно повторно привязываете сетку к базе данных.
При повторной привязке сетки выбор пользователя теряется. Выбранные строки для обработки отсутствуют.