在DataTable中使用分页在GridView中显示

时间:2013-12-24 13:01:53

标签: c# asp.net gridview datatable

我想在GridView中使用30个数据。我想读取我的文件夹中的所有文件并在GridView中显示。我使用以下代码。

string folderPath = @"C:\Folder\Folder-2.0\New folder";
DataTable dt = new DataTable();
//Creating DataTable

foreach (string fileName in Directory.EnumerateFiles(folderPath, "*.txt"))
    {
        string contents = File.ReadAllText(fileName);
        string str = string.Empty;
        string s;

        if (File.Exists(fileName))
        {
            StreamReader sr = new StreamReader(fileName);
            String line;               
            int k = 0;
            while ((line = sr.ReadLine()) != null)
            {
                string[] text;

                if (line.Trim() != string.Empty)
                {
                    //text = line.Split(new char[] { '^' }, StringSplitOptions.RemoveEmptyEntries);

                    text = line.Split('^');

                    if (text[0].Contains("START FOOTER"))
                    {
                        break;
                    }
                    else
                    {
                        DataRow dr;
                        dr = dt.NewRow();

                        for (int i = 0; i <= text.Length - 1; i++)
                        {
                            dr[i] = text[i];
                        }

                        dt.Rows.Add(dr);
                        k = k + 1;
                    }
                }

            }
            Response.Write(k);
            //  Response.End;
            GridView1.DataSource = dt;
            GridView1.DataBind();

        }
        else
        {
            s = "File does not exists";
        }
    }

但上面的代码抛出了错误System.OutOfMemoryException。错误指向代码GridView1.DataBind();文件夹中有大约2000个文件,每个文件的大小在1到2 MB之间。这就是为什么我想使用DataTable使用分页。通过DataTable,我想显示30条记录。

谢谢,

1 个答案:

答案 0 :(得分:0)

请将PageSize定义为30并实现PageIndexChanging事件

protected void GridView1_PageIndexChanging(object sender, GridView1PageEventArgs e)
{
    // here you need create one method of your above code and call here 
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataBind();
}