Надеюсь, я понял, и я закодировал это:
private void saveInCSVFILE()
{
if (txtName.Text != string.Empty && txtLastName.Text != string.Empty && txtAge.Text != string.Empty && txtAdress.Text != string.Empty && txtContactNumber.Text != string.Empty)
{
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("filename.csv", true))
{ sw.WriteLine(string.Format("{0};{1};{2};{3};{4}", txtName.Text, txtLastName.Text, txtAge.Text, txtAdress.Text, txtContactNumber.Text)); }
updateTable();
}
}
private void updateTable()
{
dgv.Rows.Clear();
dgv.Columns.Clear();
using (System.IO.StreamReader sr = new System.IO.StreamReader("filename.csv"))
{
while (sr.Peek() > -1)
{
string setRow = string.Empty;
string[] tmp = sr.ReadLine().Split(';');
setRow = tmp[0] + ';' + tmp[1] + ';' + tmp[2];
dgv.Rows.Add(setRow.Split(';'));
}
}
}
1) Если вы хотите экспортировать этот проект, никогда не используйте относительный путь, но вы должны использовать абсолютный путь
2) Я использовал конструкцию using, поэтому файл автоматически закрывается после завершения цикла.
3) Это не лучшее решение, потому что каждый раз, когда вы вызываете таблицу обновления, прежде чем она очищает таблицу от столбца и строки и после заполнения dgv данными.
Редактировать:
Я думаю, что это лучшее решение:
private void SaveInCSVFILE()
{
if (txtName.Text != string.Empty && txtLastName.Text != string.Empty && txtAge.Text != string.Empty && txtAdress.Text != string.Empty && txtContactNumber.Text != string.Empty)
{
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("filename.csv", true))
{ sw.WriteLine(string.Format("{0};{1};{2};{3};{4}", txtName.Text, txtLastName.Text, txtAge.Text, txtAdress.Text, txtContactNumber.Text)); }
UpdateTable();
}
}
private void UpdateTable()
{
using (System.IO.StreamReader sr = new System.IO.StreamReader("filename.csv"))
{
int tmpCountRow = 0;
while (sr.Peek() > -1)
{
tmpCountRow++;
if (tmpCountRow > this.rowCountFile)
{
AddRow(sr.ReadLine());
this.rowCountFile++;
}
else
sr.ReadLine();
}
}
}
private void ClearDataGridView()
{
dgv.Rows.Clear();
dgv.Columns.Clear();
}
private void AddRow(string s)
{
string setRow = string.Empty;
string[] tmp = s.Split(';');
setRow = tmp[0] + ';' + tmp[1] + ';' + tmp[2];
dgv.Rows.Add(setRow.Split(';'));
}
private void LoadTable()
{
ClearDataGridView();
dgv.ColumnCount = 3;
dgv.Columns[0].HeaderCell.Value = "First Name";
dgv.Columns[1].HeaderCell.Value = "Last Name";
dgv.Columns[2].HeaderCell.Value = "Age";
using (System.IO.StreamReader sr=new System.IO.StreamReader("filename.csv"))
{
while (sr.Peek() > -1)
{
this.rowCountFile++;
while (sr.Peek() > -1)
{
AddRow(sr.ReadLine());
}
}
}
}
В этом втором решении я реализовал функцию LoadTable()
AddRow(string s)
ClearDataGrdView()
и отредактировал UpdateTable()
1) Метод LoadTable()
будет вызывать в form_load: этот метод заполняет ваш datagridview (dgv) данными, которые были в файле csv. И этот метод сохраняет строку, которая находится в файле
2)метод AddRow(string s)
просто добавляет строку в dgv
3) метод ClearDataGridView()
вызывается в LoadTable()
: очищаем datagridview от строк и столбцов, которые есть в данный момент
4) метод UpdateTable()
теперь лучше, потому что просто добавьте строки, которых раньше не было.
person
Tinwor
schedule
12.10.2013
not getting desire output
можно поконкретнее? - person King King   schedule 13.10.2013