Как я могу экспортировать GridView.DataSource в datatable или dataset?
Как я могу экспортировать GridView.DataSource
в datatable или dataset?
- Android: Как GridView auto_fit находит количество столбцов?
- Как удалить строку из GridView?
- Изменение цвета ячейки на разные значения - Gridview
- Сброс позиции прокрутки после обратной пересылки Async - ASP.NET
- Редактирование строки Gridview - динамическое связывание с DropDownList
- Отображение изображений из определенной папки на SD-карте с использованием gridview
- Проблемы с GridView внутри ScrollView в android
- Как отключить прокрутку GridView в Android?
Вы должны преобразовать первый 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();