2013-06-11 5 views
0

Я прочитал данные из текстового файла в datagridview сейчас, я хочу внести изменения в текстовый файл, если значения datagridview будут изменены пользователем во время выполнения? это мой код для чтения файла Теперь я хочу, чтобы обновить данные в текстовом файле в конкретном месте и писать ..Сохранить изменения в datagridview в текстовый файл

private void button1_Click(object sender, EventArgs e) 
    { 
     string line = ""; 
     string text = ""; 
     bool si = false; 
     int w = 0; 
     bool t = false; 
     bool counter = false; 
     int length = 0; 
     const Int32 BufferSize = 128; 
     int groupid = -1; 
     int stringid = -1; 
     string[] split; 
     int tnog = 0; 
     if (file.Contains("random.TST")) 
     { 
      using (var fileStream = File.OpenRead(this.file)) 
      using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize)) 
       while ((line = streamReader.ReadLine()) != null) 
       { 
        if (line.Contains('$') && (line.Contains('@') || line.Contains('}'))) 
        { 
         split = line.Split(' ', '@', '}'); 
        } 
        else if (line.Contains('$')) 
        { 
        } 
        else if (line.Contains('|')) 
        { 
         counter = false; 
        } 
        else if (!(counter)) 
        { 
         split = line.Split(' ', '@'); 
         for (int i = 0; i < split.Length; i++) 
         { 
          if (t) 
          { } 
          else if (!t) 
          { 
           if (split[i].Trim() == "") 
           { 
            groupid = 0; 
           } 
           else if (split[i].Trim() != "") 
           { 
            groupid = Convert.ToInt16(split[i]); 
            t = true; 
            tnog++; 
           } 
          } 

          counter = true; 
         } 
        } 

        else if (counter) 
        { 
         //split = line.Split(' '); 
         if (line.Contains('|')) 
         { 
          counter = false; 
         } 
         else if (counter) 
         { 
          split = line.Split(' ', '@', '}'); 
          for (int i = 0; i < split.Length; i++) 
          { 
           if (si) 
           { 
            if (split[i].Trim() == "") 
            { 
             //text[i] = " "; 
            } 
            else if (split[i].Trim() != "") 
            { 
             text += Convert.ToString(split[i]); 
             text += " "; 
             length = text.Length; 
            } 

           } 
           else if (!si) 
           { 
            if (split[i].Trim() == "") 
            { 
             // sid[i] = 0; 
            } 
            else if (split[i].Trim() != "") 
            { 
             stringid = Convert.ToInt16(split[i]); 
             si = true; 
            } 

           } 

          } 
          if ((groupid == -1) || (stringid == -1)) 
          { } 
          else 
          { 
           dataGridView1.Rows.Add(groupid, stringid, text, length); 
           text = ""; 
           if (tnog % 2 == 0) 
           { 
            dataGridView1.Rows[w].DefaultCellStyle.ForeColor = Color.Gray; 
            dataGridView1.Rows[w].DefaultCellStyle.BackColor = Color.Yellow; 

           } 
           else 
           { 
            dataGridView1.Rows[w].DefaultCellStyle.ForeColor = Color.Plum; 
            dataGridView1.Rows[w].DefaultCellStyle.BackColor = Color.RoyalBlue; 
           } 
           w++; 
          } 

          si = false; 
          t = false; 
         } 


        } 
       } 
      textBox1.Text = Convert.ToString(tnog); 
     } 
     else 
     { 
      MessageBox.Show("Invalid File:"); 
     } 
    } 
+0

Можете ли вы показать нам, что вы [попробовали в первый раз] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)? –

+0

Я разместил свой код для чтения. Но я не знаю, с чего начать писать. – soldiershin

+0

Вместо того, чтобы вставлять ваши изменения в текстовый файл, просто создайте новый файл из содержимого вашего документа datagridview. – CathalMF

ответ

0

Вы действительно должны смотреть на связывание данных в DataGridView (вы можете дать нам некоторые образцы строк из файла?), но если нет ...

Прочитайте весь свой файл в строке и замените все соответствующие значения уникальным счетчиком-заполнителем, то есть {1}, {2}. Замените счетчики заполнителей данными datagridview, прежде чем записывать строку обратно в файл.

+0

3 @ данные: @ 4 @ данные: @ 5 @ данные: @ 6 @ данные: @ 1 @ данные: @ 100 @ данные: @ 8 @ Название файла Units - Input: @ это данные файла. Числовые значения - это идентификаторы, а данные - текст ... Как мы можем определить, какие строки обновили пользователя? И как я могу привязать данные к gridview? Любые примеры? – soldiershin

+0

Создайте DataTable и запишите, что вместо непосредственного заполнения DataGridView. Затем установите dataGridView.DataSource = dataTable. [Вот пример привязки данных.] (Http://www.vbforums.com/showthread.php?592638-RESOLVED-Delimited-Text-to-Datagridview-problem-with-tab-and-space-delimiters) – ashishduh

+0

спасибо У меня уже есть идея. :) – soldiershin