2016-11-08 6 views
0

Я хочу прочитать файл между двумя датами и добавить значение к datatable. Затем вы хотите показать значение datatable в сетке с пейджингом. Но проблема в том, что этот файл содержит огромное количество данных (более 1 М), поэтому, если я использую gridview default paging, мое приложение зависает. поэтому я хочу пейджинговать в datatable.so как я могу это сделать? Любая идея образца кода, пожалуйста.Как подкачки в datatable с использованием C#

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; 
    } 
} 

ответ

0

Согласно MSDN, лимит данных составляет 16 777 216 строк. поэтому, когда вы загружаете огромные данные в datatable, это влияет на производительность приложения и серверную память. Таким образом, лучше 1 хранить эти огромные данные в базе данных, например SQL-сервер или другую базу данных. Затем отобразите данные с помощью функции номера ряда (если вы используете MS SQL 2005 или 2008). Если вы используете SQL Server 2012, вы можете использовать выборку. Если вы используете MySQL-сервер, вы можете использовать лимит для отображения ограниченных данных за раз. То, что я пытаюсь объяснить вам, что вам нужна разбивка страниц на стороне сервера, а не разбивка страниц на стороне клиента в этой ситуации. Благодарю.

Смежные вопросы