Visual Basic, который
работает сегодня

Разборы VB6, VB.NET, ASP.NET и WPF с рабочим кодом и современными альтернативами.

Открыть базу
VB Knowledgebase / GridViewПоделиться

Первый GridView: выводим таблицу из SQL Server в ASP.NET

РазделGridViewУровеньНовичокЧтение7 мин

Минимальный рабочий пример: кнопка на странице, запрос к базе Northwind и таблица GridView с результатом. Плюс то, что обычно опускают в «hello world»: Using, web.config и IsPostBack.

ASPXКопировать
<%@ Page Language="VB" AutoEventWireup="false"
    CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html>
<html lang="ru">
<head runat="server">
  <title>Категории</title>
</head>
<body>
  <form id="form1" runat="server">
Связка SqlConnection, SqlDataAdapter, DataTable и DataBind покрывает большинство задач вывода данных в Web Forms. Строку подключения держите в web.config, соединение заворачивайте в Using, а в Page_Load не забывайте про IsPostBack.
Открыть статью целиком

Разбираем код на стеке Microsoft и вебе: от VB6 и классического ASP до .NET 8

  • .NET
  • Blazor
  • JavaScript
  • HTML5
  • CSS
  • jQuery
  • JSON
  • XML
  • NuGet
  • SQLite
  • MySQL
  • Git

Одна база. Ответы на вопросы
по старому коду.

Каждая статья отвечает на одну задачу: прочитать файл, отправить письмо, разбить GridView на страницы. Без воды и с проверенным кодом.

Поиск, который знает VB

Ищите по задаче, а не по точному названию. «Отправить письмо» найдёт и CDO в VB6, и SmtpClient в ASP.NET.

Код, который запускается

Примеры короткие, с комментариями и обработкой ошибок. Копируются в один клик.

ASPX
<%@ Page Language="VB" AutoEventWireup="false"
    CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html>
<html lang="ru">
<head runat="server">
  <title>Категории</title>
</head>

Было и стало

В каждой статье есть блок «Как это делают сегодня»: тот же приём на современном .NET.

VB62005
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(path, 1)
text = ts.ReadAll
ts.Close
VB.NET 172026
Dim text = File.ReadAllText(path, Encoding.UTF8)
' или асинхронно, без блокировки UI
Dim t = Await File.ReadAllTextAsync(path)

Восемь разделов. Одна логика.

Выберите технологию: внутри собраны разборы от простого к сложному.

VB.NET и WinForms
VB.NET и WinForms8 статей

VB.NET для настольных приложений: файлы и папки, INI-настройки, хеши, списки баз SQL Server, многопоточность в WinForms и подсветка синтаксиса через Regex.

Весь раздел
JavaScript и CSS
JavaScript и CSS8 статей

JavaScript глазами VB-разработчика: даты, строки и обрезка пробелов, cookie, всплывающие окна, позиция курсора, каскадные списки на Ajax и CSS-приёмы для старых Web Forms страниц.

Весь раздел
ASP.NET
ASP.NET12 статей

ASP.NET Web Forms: почта через SmtpClient, файлы и ZIP-архивы, загрузка картинок, экспорт в Excel, темы и скины, динамические контролы и шифрование web.config.

Весь раздел
GridView
GridView14 статей

Всё про GridView: шаблоны и стили, сортировка, постраничный вывод и свой пейджинг, итоги в подвале, группировка строк, колонки-флажки и редактирование.

Весь раздел
Данные и привязка
Данные и привязка9 статей

Привязка данных в ASP.NET: DataSet и DataTable, хранимые процедуры, LINQ to Entities, Repeater, ListView с DataPager и GroupTemplate, TreeView из связанных таблиц.

Весь раздел
WPF
WPF7 статей

WPF для тех, кто пришёл из WinForms: привязка TreeView, меню, ListBox, ListView и DataGrid к DataSet, автоподсказка в TextBox и стили кнопок со свечением.

Весь раздел

Как устроена каждая статья

Один и тот же порядок во всех разборах, чтобы вы находили нужное за секунды.

  1. ЗадачаЧто именно не работает и в какой версии.
  2. Рабочий кодМинимальный пример, который запускается.
  3. Разбор по строкамПочему так, а не иначе, и где грабли.
  4. Как сегодняСовременная замена на .NET и вебе.
75разборов с кодом
229примеров кода
8разделов по технологиям
2008год, когда база начиналась

Новое в базе

Данные и привязка Событие ItemDataBound в ASP.NET ListView: доступ к данным и контролам строкиItemDataBound вызывается для каждой строки ListView сразу после привязки данных. Это лучшее место, чтобы поменять оформление, спрятать кнопку или заполнить вложенный список по значению из записи. 7 минСредний Данные и привязка Привязка GridView к LINQ to Entities: проекции, сортировка и постраничный выводEntity Framework позволяет отдать GridView результат LINQ-запроса вместо DataTable. Разбираем, как сделать это без утечек контекста, лишних колонок и выборки всей таблицы ради одной страницы. 8 минСредний WPF WPF Menu с привязкой данных: меню из коллекции, команды и вложенные пунктыМеню, собранное вручную в XAML, неудобно, когда пункты зависят от прав пользователя или хранятся в базе. Покажем, как построить WPF Menu из коллекции объектов и связать пункты с командами. 7 минСредний ASP.NET Архивирование нескольких файлов в ZIP в ASP.NET и отдача архива пользователюПользователь отметил десять отчётов и хочет скачать их одним файлом. Собираем ZIP-архив на лету, пишем его прямо в Response и не оставляем на диске сервера временного мусора. 8 минСредний Данные и привязка Как загрузить DataSet из хранимой процедуры SQL ServerХранимая процедура плюс SqlDataAdapter это классический способ наполнить DataSet в приложениях на VB.NET. Показываем аккуратную версию кода: с Using, типизированными параметрами и несколькими таблицами. 7 минНовичок Данные и привязка OUTPUT-параметры хранимой процедуры SQL Server в ASP.NETХранимая процедура может вернуть не только набор строк, но и отдельные значения через OUTPUT-параметры. Разбираем, как объявить их в ADO.NET, когда читать результат и почему он бывает пустым. 8 минСредний GridView Группировка строк в ASP.NET GridView: RowSpan и строки-заголовки группGridView не умеет группировать строки, но это легко добавить. Покажем два приёма: объединение повторяющихся ячеек через RowSpan и отдельную строку-заголовок над каждой группой с подсчётом итогов. 8 минСредний WPF Привязка WPF TreeView к реляционному DataSet через HierarchicalDataTemplateВ WPF дереву не нужен XML-посредник: HierarchicalDataTemplate умеет ходить по DataRelation напрямую. Достаточно правильно назвать связь и сослаться на неё в привязке. 7 минСредний Данные и привязка GroupTemplate в ASP.NET ListView: сетка из нескольких колонокКаталог в три колонки, галерея по четыре фото в ряд: такие сетки ListView строит сам через GroupTemplate. Разбираем, как работают плейсхолдеры, GroupItemCount и шаблон пустой ячейки. 7 минСредний GridView Календарь в GridView: удобный ввод дат в режиме редактированияДата, введённая руками в TextBox, это постоянный источник ошибок: 03.04 или 04.03? Разбираем, как встроить в редактируемую строку GridView календарь и не запутаться в форматах. 7 минСредний

Из блога

Замена Crystal Reports в VB6 и .NET-приложениях: RDLC, SSRS, FastReport и генерация PDF кодомМиграцияЗамена Crystal Reports в VB6 и .NET-приложениях: RDLC, SSRS, FastReport и генерация PDF кодомОтчёты на Crystal Reports часто оказываются последним, что держит приложение на старой платформе. Разбираем, где проходят границы поддержки движка, какие есть замены и как переносить сотню .rpt-файлов без потери печатных форм.10 октября 20269 мин
Мы пишем так, чтобы пример из статьи запустился с первой попытки. Если код нельзя скопировать и проверить за пять минут, это не разбор, а пересказ документации.
Редакция VB Knowledgebaseпринцип, по которому проверяется каждая статья
Книги и лестница

Частые вопросы

Это перевод старого англоязычного сайта?

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

Код из статей можно брать в рабочий проект?

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

Почему VB6 и Web Forms, если есть .NET 8?

Потому что такие системы работают в тысячах компаний, и их кто-то сопровождает. Мы помогаем чинить и дорабатывать legacy, а в блоге разбираем, как постепенно с него уйти. Когда латать старую систему дороже, чем переписать, её переносят в разработку веб-приложения на современном стеке.

Как найти нужную статью быстрее?

Нажмите Ctrl K или кнопку «Поиск» в шапке. Поиск идёт по заголовкам, тегам и описаниям всех 75 статей и записей блога.

Можно предложить тему?

Да. Напишите через страницу «Предложить тему»: опишите задачу и версию VB или .NET. Самые частые вопросы превращаем в новые разборы.

Читатель с ноутбуком

Начните с раздела,
который горит

Тридцать с лишним разборов уже ждут. Регистрация не нужна.