Member 14576724 Ответов: 1

Как получить все данные в gridview с помощью C#


Здесь
я хочу показать имя столбца заголовка excelsheet в gridView. Но я получаю только одно последнее имя столбца в представлении сетки. Если я добавлю эти имена столбцов(используя столбец.ColumnName) в ListBox, то его отображение всех столбцов правильно. Но я хочу, чтобы эти имена столбцов были в gridView.

Что я уже пробовал:

string ConStr = ""; 
        string ext = Path.GetExtension(FileUpload1.FileName).ToLower();
        string path = Server.MapPath("~/upload/" + FileUpload1.FileName);
        FileUpload1.SaveAs(path);
        if (ext.Trim() == ".xls")
        {
            ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;IMEX=2\"";
        }
        else if (ext.Trim() == ".xlsx")
        {
            //connection string for that file which extantion is .xlsx  
            ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;IMEX=2\"";
        }
        //making query  


        string query = "select * from [Sheet1$]";

        OleDbConnection con = new OleDbConnection(ConStr);
                OleDbCommand cmd2 = new OleDbCommand(query, con);
        
        OleDbDataAdapter da = new OleDbDataAdapter(cmd2);
       
        DataSet ds = new DataSet();

        da.Fill(ds);
        foreach (DataTable table in ds.Tables)
        {
            foreach (DataColumn column in table.Columns)
            {
                {
                        List<object> list = new List<object>();
                        list.Add(new { column.ColumnName });
                        GridView2.DataSource = list;
                        GridView2.DataBind();

                };

            }
        }


Исправьте меня, чтобы добавить имена столбцов в источник данных gridView. Это показывает только один последний столбец.

1 Ответов

Рейтинг:
10

F-ES Sitecore

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

Вы, вероятно, хотите что-то еще, как это;

List<object> list = new List<object>();

foreach (DataTable table in ds.Tables)
        {
            foreach (DataColumn column in table.Columns)
            {
                {
                        list.Add(new { column.ColumnName });

                };

            }
        }
GridView2.DataSource = list;
GridView2.DataBind();


Или что-то, что соответствует тому, что вы пытаетесь сделать.