Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

myGridView.DataSource as DataTable

Ответ 3

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

DataTable tbl = Gridview1.DataSource as DataTable;

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

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

Ответ 4

Амб,

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

    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("&nbsp;","");
        }
        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("&nbsp;","");
        }
        dt.Rows.Add(dr);
    }

Ответ 5

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

DataTable dt =  dataSource.Tables[0];

Ответ 6

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

DataTable dt = new DataTable();
Data.DataView dv = default(Data.DataView);
dv = (Data.DataView)ds.Select(DataSourceSelectArguments.Empty);
dt = dv.ToTable();