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

DataTable ищу строку

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

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

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

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

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

Код: c#
1.
2.
3.
4.
5.
public class DataTable : MarshalByValueComponent, 
    IListSource // <= Вот это вот зачем, как ты думаеш?
{
    ....
}
...
Рейтинг: 0 / 0
25.04.2013, 10:18
    #38239504
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить индекс найденной строки?
Алексей КТаки DataGridView поди прицеплен к DataTable не напрямую, а через дефолтный DataView, если он явно не указан. Не?
А с каких это пор манипуляции с DefaultView начали влиять на DataTable? :)
...
Рейтинг: 0 / 0
25.04.2013, 11:11
    #38239617
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить индекс найденной строки?
cooldeveloper, ТС-у надо определить позицию найденной им строки в DataGridView. Последний отображает фактически DataTable.DefaultView.
Давай попросим ТС отсортировать грид по какой-нибудь колонке, чтобы порядок строк стал отличным от первоначального, воспользоваться твоим кодом и проверить, а правильный-ли индекс ему вернётся.
...
Рейтинг: 0 / 0
25.04.2013, 11:26
    #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
25.04.2013, 11:26
    #38239654
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить индекс найденной строки?
skyANAcooldeveloper, ТС-у надо определить позицию найденной им строки в DataGridView. Последний отображает фактически DataTable.DefaultView.
Давай попросим ТС отсортировать грид по какой-нибудь колонке, чтобы порядок строк стал отличным от первоначального, воспользоваться твоим кодом и проверить, а правильный-ли индекс ему вернётся.
Индекс будет тот же самый, что и в первом случае. Именно это я и сказал:
МСУА с каких это пор манипуляции с DefaultView начали влиять на DataTable? :)
Что не так-то?
...
Рейтинг: 0 / 0
25.04.2013, 11:28
    #38239659
cooldeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить индекс найденной строки?
Mikhail Tchervonenkocooldeveloper, действительно, если в гриде кликнуть по заголовку то индекс полученный из DataTable перестаёт соответствовать реальному в гриде
Разумеется. Я тебе ответил на вопрос:

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

P.S. А вообще, святое правило: юзаешь датагридвью, юзай и байдингсурс.
...
Рейтинг: 0 / 0
25.04.2013, 11:33
    #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
25.04.2013, 11:44
    #38239702
Mikhail Tchervonenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить индекс найденной строки?
cooldeveloper,

да, так выглядит оптимальнее, и не требует индекса.
...
Рейтинг: 0 / 0
25.04.2013, 11:51
    #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
25.04.2013, 13:40
    #38239906
Mikhail Tchervonenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить индекс найденной строки?
cooldeveloper,

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

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

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

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

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

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

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

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


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