C# преобразование GridView в DataTable (ASP.Net)

Дано: ASP.Net страница с GridView, заполненным данными.
Задача: Перенести эти данные в переменную типа DataTable на C#

При работе с веб-проектом у компонента gridview нет явного преобразования в datatable. Если бы это был проект windows forms, то преобразование можно было бы сделать так:


BindingSource bsSource = (BindingSource) myGridView.DataSource; 
DataTable myDataTable = (DataTable) bsSource.DataSource;

Однако в ASP.Net проекте необходимо явно задать столбцы таблицы и вручную перенести данные из GridView в DataTable. В итоге получаем примерно следующий код (его можно вставить как непосредственно на странице, так и вынести в отдельный класс для всего проекта - во втором случае вместо "protected void" укажите "public static"):

protected void DataTable GridViewToDataTable(GridView gv)
        {
            //создание переменной DataTable
            DataTable dt = new DataTable("dtTable");

            //Добавление колонок в DataTable переменную
            foreach (TableCell cell in gv.HeaderRow.Cells)
            {
                dt.Columns.Add(cell.Text);
            }

            //перебор всех строк в GridView и копирование данных в DataTable
            foreach (GridViewRow row in gv.Rows)
            {
                dt.Rows.Add();
                for (int i = 0; i < row.Cells.Count; i++)
                {
                    dt.Rows[row.RowIndex][i] = row.Cells[i].Text;
                }
            }
            return dt;
        }

Пример использования:

DataTable dtList = GridViewToDataTable(MyGridView);
if (dtList.Rows.Count > 0)
{
     string strSurname = dtList.Rows[0]["Фамилия"].ToString();
}

(с) Ella S
.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

Комментариев нет :

Отправка комментария