Помогите пожалуйста в таком вопросе:
На форме есть DataGrid который получает данные из DataSet-а. DataSet заполняется из БД Access. В БД есть столбцы с гиперссылками (тип данных - гиперссылка).
В DataSet гиперссылка попадает в таком виде
текст#URI#
и также отображается в DataGrid-е (не смотря на то, что соответствующие столбцы - DataGridViewLinkColumn).
Пробовал на прямую получать данные в Grid из Access - та же песня...
Как заставить Grid правильно отображать гиперссылку?
В DataSet-е нет типа данных "гиперссылка". Если в DataSet-е поменять значение (или добавить строку), соблюдая указанный синтаксис - все успешно сохраняется в БД и при ее открытии Access-ом выглядит как надо.
А вот в DataGrid отображается без "конвертации"...
.NET - DataGrid и гиперссылка из Access
-
Delirium
Re: .NET - DataGrid и гиперссылка из Access
avmir, уточните, на чем вы программируете? ASP.NET или же просто Visual C#? Просто варианты ответа отличаются 

-
Delirium
-
avmir
Re: .NET - DataGrid и гиперссылка из Access
Никто не знает, что-ли? Весь инет уже облазил
а внятного ответа нет...
"Нам бы схемку, аль чертеж"...
а внятного ответа нет..."Нам бы схемку, аль чертеж"...
-
avmir
Re: .NET - DataGrid и гиперссылка из Access
avmir, вы не забывайте, что программирует немного народу, и ответить могут далеко не все
Я сегодня попробую воспроизвести Вашу проблему и отпишу о результатах.
Я сегодня попробую воспроизвести Вашу проблему и отпишу о результатах.-
Delirium
Re: .NET - DataGrid и гиперссылка из Access
Значит так. Полазив по инету, ничего толкового тоже не нашел, поэтому предлагаю альтернативный вариант: замена данных непосредственно в ячейках после заполнения грида. Пример:
Код:
В таком варианте все работает. В примере код вставлен сразу после заполнения грида. Можно преобразовать его в функцию и вызывать когда необходимо. Само собой, надо будет в строке row.Cells[2].Value вместо 2 поставить нужный столбец.
Код:
Код: Выделить всё
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
Спасибо! Попробую сей вариант. Только не знаю как это отразится на производительности если ячеек, например, 40000...
-
avmir
Re: .NET - DataGrid и гиперссылка из Access
avmir, а что, вы будете отображать на экране сразу все 40 000 строк? По этому поводу уже много дебатов было. Как правило, делают либо пейджинг, либо еще как.
P.S. 98 000 тестовых записей обрабатывались около 2,5 секунд в DEBUG режиме.
P.P.S. А может быть проще в БД хранить ссылки в виде текста, а уже в DataGridView делать DataGridViewLinkColumn на данное поле? Так гораздо быстрее и проще.
P.S. 98 000 тестовых записей обрабатывались около 2,5 секунд в DEBUG режиме.
P.P.S. А может быть проще в БД хранить ссылки в виде текста, а уже в DataGridView делать DataGridViewLinkColumn на данное поле? Так гораздо быстрее и проще.