如何使用C#

时间:2016-11-08 11:03:14

标签: c# asp.net

我想在两个日期之间读取文件并将值添加到数据表中。然后想要在具有分页的网格中显示数据表值。但问题是这些文件包含大量数据(超过1M)所以如果我使用gridview默认分页我的应用程序挂起。所以我想在datatable中进行分页。我该怎么做?请问示例代码。

public DataTable CreateDataSource(DateTime fromDate, DateTime toDate)
{
    int i = 0;
    string visitorCountry = "";
    try
    {
        dt = dtVisitLog();
        for (DateTime x = fromDate; x <= toDate; x = x.AddDays(1))
        {
            string startDate = x.Year.ToString().Substring(2, 2) + x.Month.ToString("d2") + x.Day.ToString("d2");
            string FILE_NAME = pathName + "\\u_ex" + startDate + ".log";
            if (File.Exists(FILE_NAME))
            {
                FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read,
                                               FileShare.ReadWrite);
                StreamReader sr = new StreamReader(fs);
                string strResult = sr.ReadToEnd();
                sr.Dispose();
                fs.Dispose();
                sr = null;
                fs = null;
                string[] arLogLines = strResult.Split(Convert.ToChar("\n"));

                for (i = arLogLines.Length-2; i > 3; i--)
                {
                   string[] attribute = arLogLines[i].Split(Convert.ToChar(" "));                
                   dt.Rows.Add(attribute[0], attribute[1], attribute[8], attribute[4], attribute[7], visitorCountry);
                }
            }
        }
        return dt;
    }
    catch (Exception ex)
    {
        return null;
    }
}

1 个答案:

答案 0 :(得分:0)

根据MSDN,Datatable限制为16,777,216行。因此,当您将大量数据加载到datatable时,它会影响应用程序和服务器内存的性能。因此,最好将这些巨大的数据存储到数据库中,如SQL服务器或其他数据库。然后使用行号功能显示数据(如果使用MS SQL 2005或2008)。如果您使用SQL Server 2012,则可以使用fetch。如果您使用MySQL服务器,那么您可以使用限制一次显示有限的数据。我试图向你解释在这种情况下你需要服务器端分页而不是客户端分页。谢谢。