powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как определить индекс найденной строки?
25 сообщений из 71, страница 1 из 3
Как определить индекс найденной строки?
    #38237961
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток!

DataTable ищу строку

DataRow foundRow = SqlDataTable.Rows.Find(this.ParentCombo.TextBox1.Text);

теперь хочу спозиционироваться на неё в DataGridView
походу следует использовать свойство FirstDisplayedScrollingRowIndex
(понятно что DataSource у DataGridView и есть эта SqlDataTable)

как получить этот индекс из foundRow?

Спасибо.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38237973
WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Промежуточный объект создай, в нем и ищи
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38237990
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WPF,

может я не догоняю но у меня уже найдено, теперь на него надо спозиционироваться в DataGridView
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38237993
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
int index = dt.Rows.IndexOf(row);
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38238026
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper,
спасибо, то что надо
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38238075
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkocooldeveloper,
спасибо, то что надоБудет работать только при отсутствии локального фильтра и сортировки. Надо искать индекс записи в DataView, к которому прицеплен DataGridView.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38238140
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КБудет работать только при отсутствии локального фильтра и сортировки. Надо искать индекс записи в DataView, к которому прицеплен DataGridView.
DataTable научилась фильтровать и сортировать?
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38239315
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperАлексей КБудет работать только при отсутствии локального фильтра и сортировки. Надо искать индекс записи в DataView, к которому прицеплен DataGridView.
DataTable научилась фильтровать и сортировать?
Таки DataGridView поди прицеплен к DataTable не напрямую, а через дефолтный DataView, если он явно не указан. Не?

Код: c#
1.
2.
3.
4.
5.
public class DataTable : MarshalByValueComponent, 
    IListSource // <= Вот это вот зачем, как ты думаеш?
{
    ....
}
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38239504
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТаки DataGridView поди прицеплен к DataTable не напрямую, а через дефолтный DataView, если он явно не указан. Не?
А с каких это пор манипуляции с DefaultView начали влиять на DataTable? :)
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38239617
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper, ТС-у надо определить позицию найденной им строки в DataGridView. Последний отображает фактически DataTable.DefaultView.
Давай попросим ТС отсортировать грид по какой-нибудь колонке, чтобы порядок строк стал отличным от первоначального, воспользоваться твоим кодом и проверить, а правильный-ли индекс ему вернётся.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38239652
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper,

действительно, если в гриде кликнуть по заголовку то индекс полученный из DataTable перестаёт соответствовать реальному в гриде.
Вопрос решил таким образом:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        public Boolean FindById(string lsID)
        {
            if (this.ParentCombo.SqlDataTable != null) // Проверка на cуществование объекта DataTable
            {

                int index = (this.dataGridView.DataSource as BindingSource).Find(this.ParentCombo.SqlDataTable.Columns[0].ColumnName.ToString(), lsID);
                if (index != null && index>-1 && this.dataGridView != null) // проверка индекса
                {
                    CurrencyManager currencyManager = (CurrencyManager)BindingContext[this.dataGridView.DataSource, this.dataGridView.DataMember];
                    currencyManager.Position = index; // позиционирование в гриде
                    return true;
                }
                return false;
            }
            return true;
        }


возможно не самый оптимальный способ но работает надёжно, и не зависит от сортировки и фильтрации.

Спасибо всем кто учавствовал.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38239654
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAcooldeveloper, ТС-у надо определить позицию найденной им строки в DataGridView. Последний отображает фактически DataTable.DefaultView.
Давай попросим ТС отсортировать грид по какой-нибудь колонке, чтобы порядок строк стал отличным от первоначального, воспользоваться твоим кодом и проверить, а правильный-ли индекс ему вернётся.
Индекс будет тот же самый, что и в первом случае. Именно это я и сказал:
МСУА с каких это пор манипуляции с DefaultView начали влиять на DataTable? :)
Что не так-то?
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38239659
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkocooldeveloper, действительно, если в гриде кликнуть по заголовку то индекс полученный из DataTable перестаёт соответствовать реальному в гриде
Разумеется. Я тебе ответил на вопрос:

Mikhail как получить этот индекс из foundRow?

P.S. А вообще, святое правило: юзаешь датагридвью, юзай и байдингсурс.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38239673
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkoвозможно не самый оптимальный способ но работает надёжно, и не зависит от сортировки и фильтрации.
Классический вариант: отыскать заново элемент по идентификатору и определить его индекс через тот же "мой вариант".

Код: 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.
public partial class Form1 : Form
{
    public DataRow Row { get; set; }

    public Form1()
    {
        InitializeComponent();

        var table = new DataTable();
        table.Columns.Add("ID", typeof(int));
        Enumerable.Range(1, 10).ToList().ForEach(d => table.Rows.Add(d));

        dataGridView1.DataSource = table;
        Row = table.Rows[3];
        int index = table.Rows.IndexOf(Row);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var table = (dataGridView1.DataSource as DataTable).DefaultView.ToTable();
        var row = table.Select("ID=" + Row["ID"])[0];
        int index = table.Rows.IndexOf(row); // тут будет новое значение
    }
}
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38239702
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper,

да, так выглядит оптимальнее, и не требует индекса.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38239717
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkocooldeveloper, да, так выглядит оптимальнее, и не требует индекса.
Наоборот, этот вариант не оптимальнее:

Код: c#
1.
2.
// Первый лишний дополнительный цикл
var table = (dataGridView1.DataSource as DataTable).DefaultView.ToTable();



Код: c#
1.
2.
// Второй лишний дополнительный цикл
var row = table.Select("ID=" + Row["ID"])[0];



Юзай BindingSource.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38239906
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper,

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

Спасибо.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38239914
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail TchervonenkoПосле дельфей многое кажется более сложным и не логичным
Знаем, плавали :)

P.S. Недавно заходил упертый дельфист, пришлось расколыхать его мозг немного :)
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240067
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperskyANAcooldeveloper, ТС-у надо определить позицию найденной им строки в DataGridView. Последний отображает фактически DataTable.DefaultView.
Давай попросим ТС отсортировать грид по какой-нибудь колонке, чтобы порядок строк стал отличным от первоначального, воспользоваться твоим кодом и проверить, а правильный-ли индекс ему вернётся.
Индекс будет тот же самый, что и в первом случае. Именно это я и сказал:
МСУА с каких это пор манипуляции с DefaultView начали влиять на DataTable? :)
Что не так-то?Протри глаза.
ТС-у нужен порядковый индекс в DataGridView (displayIndex), а не индекс строки в таблице данных (dataIndex).
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240163
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПротри глаза.
ТС-у нужен порядковый индекс в DataGridView (displayIndex), а не индекс строки в таблице данных (dataIndex).
Хватит упорно давить лбом кирпичную кладку. Я еще раз повторяю: 14228907
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240273
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperskyANAПротри глаза.
ТС-у нужен порядковый индекс в DataGridView (displayIndex), а не индекс строки в таблице данных (dataIndex).
Хватит упорно давить лбом кирпичную кладку. Я еще раз повторяю: 14228907 Оставь при себе свои плоские метафоры.
Я понял, что ты подумал, что под "эти индексом" ТС понимает позицую строки в DataTable, а не в DataGridView.

Вот эту своё сообщение поясни: 14228895 .
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240300
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAОставь при себе свои плоские метафоры.
Но уж лучше они, чем твоё унылое гундение, согласись.

skyANAЯ понял, что ты подумал, что под "эти индексом" ТС понимает позицую строки в DataTable, а не в DataGridView.Вот эту своё сообщение поясни: 14228895 .
Автор спросил:

Mikhail TchervonenkoDataRow foundRow = SqlDataTable.Rows.Find(this.ParentCombo.TextBox1.Text);
как получить этот индекс из foundRow?
Я ему ответил. Мне фиолетово было, к чему прикручен этот SqlDataTable, зачем он прикручен к гриду и почему не справедлив мир. Мне так же фиолетово, есть ли у грида сортировка. Она вообще может быть выключена у автора и не используется.
Так понятно?
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240334
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperskyANAОставь при себе свои плоские метафоры.
Но уж лучше они, чем твоё унылое гундение, согласись.

skyANAЯ понял, что ты подумал, что под "эти индексом" ТС понимает позицую строки в DataTable, а не в DataGridView.Вот эту своё сообщение поясни: 14228895 .
Автор спросил:

Mikhail TchervonenkoDataRow foundRow = SqlDataTable.Rows.Find(this.ParentCombo.TextBox1.Text);
как получить этот индекс из foundRow?
Я ему ответил. Мне фиолетово было, к чему прикручен этот SqlDataTable, зачем он прикручен к гриду и почему не справедлив мир. Мне так же фиолетово, есть ли у грида сортировка. Она вообще может быть выключена у автора и не используется.
Так понятно?Не тупи. Я тебе тебя не об этом спрашиваю. Не фиг на автора стрелки переводить.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240403
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе тупи. Я тебе тебя не об этом спрашиваю. Не фиг на автора стрелки переводить.
Опять давишь лбом стену? ) Что именно тебе там не ясно?
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240473
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperskyANAНе тупи. Я тебе тебя не об этом спрашиваю. Не фиг на автора стрелки переводить.
Опять давишь лбом стену? ) Что именно тебе там не ясно?Не ясно, на фиг ты постишь бессмысленные сообщения, если понимаешь, что ТС-у нужно совсем другое. Тро-ло-ло что-ли?
...
Рейтинг: 0 / 0
25 сообщений из 71, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как определить индекс найденной строки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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