Как я могу экспортировать GridView.DataSource в datatable или dataset?

Как я могу экспортировать GridView.DataSource в datatable или dataset?

Вы должны преобразовать первый DataSource в BindingSource , посмотрите пример

 BindingSource bs = (BindingSource)dgrid.DataSource; // Se convierte el DataSource DataTable tCxC = (DataTable) bs.DataSource; 

С данными tCxC вы можете сделать что угодно.

Предполагая, что ваш DataSource имеет тип DataTable, вы можете просто сделать это:

 myGridView.DataSource as DataTable 

Лично я бы пошел с:

 DataTable tbl = Gridview1.DataSource as DataTable; 

Это позволит вам проверить значение null, поскольку это приводит к объекту DataTable или null. Передача его в качестве DataTable с использованием (DataTable) Gridview1.DataSource приведет к ошибке при сбое, если DataSource на самом деле является DataSet или даже какой-то коллекцией.

Поддерживающая документация: Документация MSDN на «как»

Амб,

У меня была такая же проблема, как у вас, и это код, который я использовал для выяснения. Хотя я не использую раздел строки нижнего колонтитула для моих целей, я включил его в этот код.

  DataTable dt = new DataTable(); // add the columns to the datatable if (GridView1.HeaderRow != null) { for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++) { dt.Columns.Add(GridView1.HeaderRow.Cells[i].Text); } } // add each of the data rows to the table foreach (GridViewRow row in GridView1.Rows) { DataRow dr; dr = dt.NewRow(); for (int i = 0; i < row.Cells.Count; i++) { dr[i] = row.Cells[i].Text.Replace(" ",""); } dt.Rows.Add(dr); } // add the footer row to the table if (GridView1.FooterRow != null) { DataRow dr; dr = dt.NewRow(); for (int i = 0; i < GridView1.FooterRow.Cells.Count; i++) { dr[i] = GridView1.FooterRow.Cells[i].Text.Replace(" ",""); } dt.Rows.Add(dr); } -  DataTable dt = new DataTable(); // add the columns to the datatable if (GridView1.HeaderRow != null) { for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++) { dt.Columns.Add(GridView1.HeaderRow.Cells[i].Text); } } // add each of the data rows to the table foreach (GridViewRow row in GridView1.Rows) { DataRow dr; dr = dt.NewRow(); for (int i = 0; i < row.Cells.Count; i++) { dr[i] = row.Cells[i].Text.Replace(" ",""); } dt.Rows.Add(dr); } // add the footer row to the table if (GridView1.FooterRow != null) { DataRow dr; dr = dt.NewRow(); for (int i = 0; i < GridView1.FooterRow.Cells.Count; i++) { dr[i] = GridView1.FooterRow.Cells[i].Text.Replace(" ",""); } dt.Rows.Add(dr); } -  DataTable dt = new DataTable(); // add the columns to the datatable if (GridView1.HeaderRow != null) { for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++) { dt.Columns.Add(GridView1.HeaderRow.Cells[i].Text); } } // add each of the data rows to the table foreach (GridViewRow row in GridView1.Rows) { DataRow dr; dr = dt.NewRow(); for (int i = 0; i < row.Cells.Count; i++) { dr[i] = row.Cells[i].Text.Replace(" ",""); } dt.Rows.Add(dr); } // add the footer row to the table if (GridView1.FooterRow != null) { DataRow dr; dr = dt.NewRow(); for (int i = 0; i < GridView1.FooterRow.Cells.Count; i++) { dr[i] = GridView1.FooterRow.Cells[i].Text.Replace(" ",""); } dt.Rows.Add(dr); } 

Я использовал ниже строки кода, и он работает, попробуйте это

 DataTable dt = dataSource.Tables[0]; 

Если вы выполните gridview.bind() адресу:

 if(!IsPostBack) { //your gridview bind code here... } 

Затем вы можете использовать DataTable dt = Gridview1.DataSource as DataTable; в функции для получения данных.

Но я привязываю datatable к gridview, когда я нажимаю кнопку, и записываю в документ Microsoft:

HTTP – это протокол без учета состояния. Это означает, что веб-сервер обрабатывает каждый HTTP-запрос для страницы как независимый запрос. Сервер не знает значений переменных, которые использовались во время предыдущих запросов.

Если у вас есть одно и то же условие, я рекомендую вам использовать Session для сохранения значения.

 Session["oldData"]=Gridview1.DataSource; 

После этого вы можете вспомнить значение при повторной отправке страницы.

 DataTable dt=(DataTable)Session["oldData"]; 

Ссылки: https://msdn.microsoft.com/en-us/library/ms178581(v=vs.110).aspx#Anchor_0

https://www.c-sharpcorner.com/UploadFile/225740/introduction-of-session-in-Asp-Net/

Это происходит поздно, но было очень полезно. Я просто отправляю на будущие ссылки

 DataTable dt = new DataTable(); Data.DataView dv = default(Data.DataView); dv = (Data.DataView)ds.Select(DataSourceSelectArguments.Empty); dt = dv.ToTable(); 
  • Как скрыть столбцы в ASP.NET GridView с автогенерированными столбцами?
  • разделители / разделители строк сетки андроида
  • Как реализовать выбор полной строки в GridView без кнопки выбора?
  • Как получить значение ячейки по имени столбца не по индексу в GridView в asp.net
  • Получить значения DataKey в GridView RowCommand
  • Полная обратная передача, вызванная LinkButton внутри GridView внутри UpdatePanel
  • Простой пример сетки Android, использующий RecyclerView с GridLayoutManager (например, старый GridView)
  • Создание элементов таблицы GridView
  • Сетка изображений внутри ScrollView
  • Высота Gridview снижается
  • Lazy загружает изображения в gridView
  • Давайте будем гением компьютера.