.NET - DataGrid и гиперссылка из Access

Ответить
 • Просмотры: 1
Аватара пользователя
avmir

.NET - DataGrid и гиперссылка из Access

Сообщение avmir »

Помогите пожалуйста в таком вопросе:



На форме есть DataGrid который получает данные из DataSet-а. DataSet заполняется из БД Access. В БД есть столбцы с гиперссылками (тип данных - гиперссылка).

В DataSet гиперссылка попадает в таком виде



текст#URI#



и также отображается в DataGrid-е (не смотря на то, что соответствующие столбцы - DataGridViewLinkColumn).

Пробовал на прямую получать данные в Grid из Access - та же песня...

Как заставить Grid правильно отображать гиперссылку?



В DataSet-е нет типа данных "гиперссылка". Если в DataSet-е поменять значение (или добавить строку), соблюдая указанный синтаксис - все успешно сохраняется в БД и при ее открытии Access-ом выглядит как надо.

А вот в DataGrid отображается без "конвертации"...
Аватара пользователя
Delirium

Re: .NET - DataGrid и гиперссылка из Access

Сообщение Delirium »

avmir, уточните, на чем вы программируете? ASP.NET или же просто Visual C#? Просто варианты ответа отличаются Изображение
Аватара пользователя
Delirium

Re: .NET - DataGrid и гиперссылка из Access

Сообщение Delirium »

Не ASP - System.Windows.Forms.DataGridView
Аватара пользователя
avmir

Re: .NET - DataGrid и гиперссылка из Access

Сообщение avmir »

Никто не знает, что-ли? Весь инет уже облазил Изображение а внятного ответа нет...

"Нам бы схемку, аль чертеж"...
Аватара пользователя
avmir

Re: .NET - DataGrid и гиперссылка из Access

Сообщение avmir »

avmir, вы не забывайте, что программирует немного народу, и ответить могут далеко не все Изображение Я сегодня попробую воспроизвести Вашу проблему и отпишу о результатах.
Аватара пользователя
Delirium

Re: .NET - DataGrid и гиперссылка из Access

Сообщение Delirium »

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





Код:

Код: Выделить всё

private void Form1_Load(object sender, EventArgs e)
        {
            this.tmpTableAdapter.Fill(this.testDataSet.tmp);
            string hyperlink = ""; 
            int index = 0;
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                hyperlink = row.Cells[2].FormattedValue.ToString(); //Берем нашу строку вида www.ya.ru#www.ya.ru@#                       
                index = hyperlink.IndexOf("#"); //Ищем знак #
                hyperlink = hyperlink.Substring(index + 1, hyperlink.Substring(index + 1).Length - 1); //Вычисляем подстроку.
                row.Cells[2].Value = hyperlink; //Заносим в ячейку.
            }
        }

В таком варианте все работает. В примере код вставлен сразу после заполнения грида. Можно преобразовать его в функцию и вызывать когда необходимо. Само собой, надо будет в строке row.Cells[2].Value вместо 2 поставить нужный столбец.
Аватара пользователя
avmir

Re: .NET - DataGrid и гиперссылка из Access

Сообщение avmir »

Спасибо! Попробую сей вариант. Только не знаю как это отразится на производительности если ячеек, например, 40000...
Аватара пользователя
avmir

Re: .NET - DataGrid и гиперссылка из Access

Сообщение avmir »

avmir, а что, вы будете отображать на экране сразу все 40 000 строк? По этому поводу уже много дебатов было. Как правило, делают либо пейджинг, либо еще как.

P.S. 98 000 тестовых записей обрабатывались около 2,5 секунд в DEBUG режиме.



P.P.S. А может быть проще в БД хранить ссылки в виде текста, а уже в DataGridView делать DataGridViewLinkColumn на данное поле? Так гораздо быстрее и проще.
Ответить

Вернуться в «Программирование и базы данных»