ErBhati Ответов: 2

как получить строки и ячейки datagrid в wpf


Привет Эксперты
Я хочу получить значения каждой ячейки для каждой строки в компонента DataGrid в WPF На кнопке нажмите событие .Кнопка находится за пределами DataGrid
плз помогите

Спасибо

Richard MacCutchan

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

ErBhati

Это не DataGridView формы Windows. Это DataGrid WPF (Windows Presentation Foundation).

2 Ответов

Рейтинг:
1

ehaborm

Это программная ошибка, так что :

измените видимость столбца на видимый.
удалите DataGridTemplateColumn.
это будет хорошо работать.


Member 11514370

Проверьте TargetIndex на -1.
Если вы наведете указатель мыши за пределы элемента управления DataGrid, targetIndex будет отрицательным.
Только обмен, когда targetIndex действителен (>=0)

также измените строку "var list = (отправитель как DataGrid).ItemsSource as ...."
к
"var list = (отправитель как DataGrid).ItemsSource as IList " когда ItemsSource является ObservableCollection ?

Рейтинг:
0

Naz_Firdouse

Используйте это в обработчике событий youer

var rows = GetDataGridRows(datagrid1);

foreach (DataGridRow r in rows)
{
 //   DataRowView rv = (DataRowView)r.Item;
  foreach (DataGridColumn column in datagrid1.Columns)
  {
      if (column.GetCellContent(r) is TextBlock)
      {
           TextBlock cellContent = column.GetCellContent(r) as TextBlock;
           MessageBox.Show(cellContent.Text);
      }
  }
}

Метод получения строк из datagrid
 public IEnumerable<datagridrow> GetDataGridRows(DataGrid grid)
     {
        var itemsSource = grid.ItemsSource as IEnumerable;
        if (null == itemsSource) yield return null;
        foreach (var item in itemsSource)
        {
          var row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
                    if (null != row) yield return row;
        }
     }
  
</datagridrow>


ErBhati

public IEnumerable< datagridrow> Getdatagridrow(DataGrid grid)
{
var itemsSource = сетка.ItemsSource как IEnumerable;

у меня есть некоторые ошибки в as IEnumerable; и public IEnumerable< datagridrow & gt; line

Naz_Firdouse

включить пространства имен
использование системы.Коллекции;
использование системы.Коллекции.Общий;

ErBhati

Спасибо

ErBhati

Немного больше помощи, сэр ,как я каждый раз привязываю значение cellContent к datatable

ErBhati

Спасибо, сэр, это дает мне хорошую идею..Большое спасибо

Naz_Firdouse

Пожалуйста, отметьте его как ответ и проголосуйте, чтобы он был полезен другим

vishal jodh

Когда я пытаюсь использовать метод GetDataGridRows (), он не получает всю информацию о строке.
получите только 7 строк, я думаю, это потому, что мой пользовательский интерфейс показывает 7 строк одновременно.
любое решение для такого вопроса.
Спасибо.