Populate Gridview at runtime using textfile

后端 未结 3 668
忘了有多久
忘了有多久 2021-01-21 08:15

it may seem to be simple problem to many of you, but want i am trying to do is i am reading a text file on a click event using StreamReader (ASP.net & C#) after

相关标签:
3条回答
  • 2021-01-21 08:50

    How about something like this:

        protected void readfile_Click(object sender, EventArgs e)
        {
            DataTable table = new DataTable();
            table.Columns.Add("Row No.");
            table.Columns.Add("Col No.");
            table.Columns.Add("Width");
            table.Columns.Add("Height");
            table.Columns.Add("Image URL");
            table.Columns.Add("Description");
    
            using (StreamReader sr = new StreamReader(@"D:\Temp\fileread\readtext.txt"))
            {
                while (!sr.EndOfStream)
                {
                    string[] parts = sr.ReadLine().Split(',');
                    table.Rows.Add(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5]);
                }
            }
            MyGridView.DataSource = table;
            MyGridView.DataBind();
        }
    
    0 讨论(0)
  • 2021-01-21 08:52

    Add columns to datatable using code below

    DataTable dt = new DataTable();
    dt.Columns.Add("Row No", typeof(Int32));
    dt.Columns.Add("Col No", typeof(Int32));
    dt.Columns.Add("Width", typeof(Int32));
    dt.Columns.Add("Height", typeof(Int32));
    dt.Columns.Add("ImageUrl", typeof(String));
    dt.Columns.Add("Description", typeof(String));
    

    And bind datatable (dt) after you populate all rows in datatable, after while loop

    using (StreamReader sr = new StreamReader(@"D:\Temp\fileread\readtext.txt"))
    {
        while ((line = sr.ReadLine()) != null)
        {
            string[] parts = line.Split(',');
            var dr = dt.NewRow(); //use newrow to create new row
            for (int i = 0; i < parts.Length; i++)
            {
                dr[i] = parts[i];
            }
            
            dt.Rows.Add(dr); //add row to datatable now
        }
        sr.Close();
    }
    //bind datatable to Gridview after we load file into dt
    MyGridView.DataSource = dt;
    MyGridView.DataBind();
    
    0 讨论(0)
  • 2021-01-21 08:54
    1. You should move your code with adding the DataColumn outside the for-loop
    2. You should create new DataRow using DataTable.NewRow method
    3. You should call data binding methods only once, and after the loops.

    Your code should be something like this:

    DataTable dt = new DataTable();
    dt.Columns.Add("Row No", typeof(Int32));
    dt.Columns.Add("Col No", typeof(Int32));
    dt.Columns.Add("Width", typeof(Int32));
    dt.Columns.Add("Height", typeof(Int32));
    dt.Columns.Add("ImageUrl", typeof(String));
    dt.Columns.Add("Description", typeof(String));
    
    using (StreamReader sr = new StreamReader(@"D:\Temp\fileread\readtext.txt"))
    {
        while ((line = sr.ReadLine()) != null)
        {
            string[] parts = line.Split(',');
            var row = dt.NewRow();
            for (int i = 0; i < parts.Length; i++)
            {
                row[i] = parts[i];
            }
            // important thing!
            dt.Rows.Add(row);
        }
        sr.Close();
    }
    MyGridView.DataSource = dt;
    MyGridView.DataBind();
    
    0 讨论(0)
提交回复
热议问题