Как я могу экспортировать 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(); 
  • Как удалить строку из GridView?
  • Как получить значение ячейки по имени столбца не по индексу в GridView в asp.net
  • Сортировка GridView: SortDirection всегда по возрастанию
  • Редактирование строки Gridview - динамическое связывание с DropDownList
  • Как реализовать Yii2 Modal Dialog на кнопке просмотра и обновления Gridview?
  • Лучший способ сделать сортировку WPF ListView / GridView при нажатии на заголовок столбца?
  • Пейджинговые и сортировочные сетки с ASP.Net MVC
  • Как установить GridView внутри ScrollView
  • Сброс позиции прокрутки после обратной пересылки Async - ASP.NET
  • Высота Gridview снижается
  • Как отключить прокрутку GridView в Android?
  • Давайте будем гением компьютера.