powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid выделение ячейки
15 сообщений из 15, страница 1 из 1
DataGrid выделение ячейки
    #38617638
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем!
Я новичок в wpf
Пытаюсь решить задачку, не получается

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public void FindRowInGrid(DataGrid CtrlDg, int Id)
        {
            try
            {
                foreach (DataRowView RowView in CtrlDg.ItemsSource)
                {
                    if ((int)RowView.Row[0] == Id)
                    {
                        if (CtrlDg.SelectionUnit == DataGridSelectionUnit.FullRow)
                            CtrlDg.SelectedItem = RowView;
                        if (CtrlDg.SelectionUnit == DataGridSelectionUnit.Cell)

                            //Как выделить ячейку 1 го столбца или все ячейки строки ????

                            //MessageBox.Show("Выделение невозможно!");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }

        }



Заранее Спасибо.
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38617708
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отсюда
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
        void SelectItem(object item)
        {
            var firstColumn = VisibleColumns.FirstOrDefault();
 
            if (firstColumn == null)
                return;
 
            var cellInfo = new DataGridCellInfo(item, firstColumn);
 
            CurrentCell = cellInfo;
 
            if (SelectionUnit == DataGridSelectionUnit.FullRow)
            {
                SelectedItem = item;
 
                if (SelectionMode == DataGridSelectionMode.Extended)
                {
                    SelectedCells.Clear();
                    SelectedItems.Clear();
                    SelectedItems.Add(item);
                }
            }
            else
            {
                if (SelectionMode == DataGridSelectionMode.Extended)
                    SelectedItems.Clear();
 
                SelectedCells.Clear();
                SelectedCells.Add(cellInfo);
            }
        }
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38618343
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Честно говоря не пойму как применить этот пример.
У меня ситуация такая:
В любом датагрид выводятся данные где первый столбец Id скрыт.
Перехватить его значение - я решил эту задачу
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
       private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            if (dg.SelectionUnit == DataGridSelectionUnit.Cell)
            this.Tb1.Text = ((DataRowView)dg.SelectedCells[0].Item).Row[0].ToString();
            
            if (dg.SelectionUnit == DataGridSelectionUnit.FullRow)
                this.Tb1.Text = ((DataRowView)dg.SelectedItems[0]).Row[0].ToString();
        }


Осталось теперь после обновления данных в гриде подсветить ячейку в случае SelectionUnit == DataGridSelectionUnit.Cell
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38618360
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не договорил
Осталось теперь после обновления данных в гриде подсветить ячейку в случае SelectionUnit == DataGridSelectionUnit.Cell по заданному значению Id (параметр в методе) для первого столбца.
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38618434
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DraginsvНе договорил
Осталось теперь после обновления данных в гриде подсветить ячейку в случае SelectionUnit == DataGridSelectionUnit.Cell по заданному значению Id (параметр в методе) для первого столбца.
1. В DataView найти DataRowView с ID == ?, DataGrid тут не при чём.
2. По найденному DataRowView установить выделение в DataGrid. Пример этого дан.
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38618458
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей К
Как применить ваш пример
вставляю ваш код в файл ...xaml.cs , все подчеркивается краснотой.
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38618506
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DraginsvКак применить ваш пример.Адаптировать под свою задачу.
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38618691
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КDraginsvКак применить ваш пример.Адаптировать под свою задачу.
В вашем примере параметр item - не мой случай
Мне нужно получить DataGridCellInfo из DataRowView как?
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38618694
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DraginsvАлексей Кпропущено...
Адаптировать под свою задачу.
В вашем примере параметр item - не мой случай
Мне нужно получить DataGridCellInfo из DataRowView как?Точно так же. DataGrid без разницы, DataRowView там или объект другого типа.
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38618717
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне методом подбора типов и аргументов не удалось найти решение vs не дает в интеллигенции такого пути
Так как получить результат одной строкой кода?
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38618985
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Одной строкой кода не получилось
вот код
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
                            int rowIndex = ???? ;
                            int columnIndex = 1;
                            CtrlDg.SelectedCells.Clear();
                            object item = CtrlDg.Items[rowIndex];
                            DataGridRow row = CtrlDg.ItemContainerGenerator.ContainerFromIndex(rowIndex) as DataGridRow;
                            DataGridCellsPresenter presenter = FindVisualChild<DataGridCellsPresenter>(row);
                            DataGridCell cell = presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex) as DataGridCell;
                            DataGridCellInfo dGCI = new DataGridCellInfo(cell);
                            CtrlDg.SelectedCells.Add(dGCI);
                            cell.Focus();



Но теперь проблема как по DataRowView определить rowIndex где DataRowView получается из
Код: c#
1.
2.
3.
4.
5.
foreach (DataRowView RowView in CtrlDg.ItemsSource)
                {
                    if ((int)RowView.Row[0] == Id)
                    ....
                }


поиском по содержимому первого скрытого столбца
преобразования типов невозможны подходящего метода нет
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38619990
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
DataRowView currentItem = null;

foreach(DataRowView item in myDataGrid.ItemsSource)
    if (((int)item["ID"]) == 12345)
    {
        currentItem = item;
        break;
    }

if (currentItem == null)
    throw new ArgumentNullException("currentItem == null");

// Упрощённый вариант. Полное решение см по той ссылке.
var firstColumn = myDataGrid.Columns[0];

var cellInfo = new DataGridCellInfo(currentItem, firstColumn);

CurrentCell = cellInfo;

// Возможно это тоже надо:
myDataGrid.SelectedCells.Clear();
myDataGrid.SelectedCells.Add(cellInfo);
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38619991
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var currentItem = myDataGrid.ItemsSource.Cast<DataRowView>().First(r => ((int)r["ID"]) == 12345);

// Упрощённый вариант. Полное решение см по той ссылке.
var firstColumn = myDataGrid.Columns[0];

var cellInfo = new DataGridCellInfo(currentItem, firstColumn);
CurrentCell = cellInfo;

// Возможно это тоже надо:
myDataGrid.SelectedCells.Clear();
myDataGrid.SelectedCells.Add(cellInfo);
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38620450
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей К
Спасибо.
интересной оказалась конструкция
Код: c#
1.
var currentItem = myDataGrid.ItemsSource.Cast<DataRowView>().First(r => ((int)r["ID"]) == 12345);


Я так понимаю из-за
Код: c#
1.
.First

она может работать без цикла перебора коллекции ItemsSource.
...
Рейтинг: 0 / 0
DataGrid выделение ячейки
    #38620548
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DraginsvАлексей К
Спасибо.
интересной оказалась конструкция
Код: c#
1.
var currentItem = myDataGrid.ItemsSource.Cast<DataRowView>().First(r => ((int)r["ID"]) == 12345);


Я так понимаю из-за
Код: c#
1.
.First

она может работать без цикла перебора коллекции ItemsSource.Да. Подробности см LINQ-to-Object.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid выделение ячейки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]