[英]listview data write onto csv file and then reading data from csv and displaying on listview
我有一個表單應用程序,在該應用程序上提供了多個文本框和列表視圖...我想將列表視圖數據顯示到csv文件中,然后從csv中讀取數據並將displayng放到listview上。 代碼在這里給出...在此代碼中,我沒有得到期望的輸出
private void btnUserInformation_Click(object sender, EventArgs e)
{
ListView view=new ListView();
string filepath=@"E:\Visual Studio Project\UserInfoTestApp\UserInfoTestApp\UserInfo.csv";
InformationInsertion();
ClearFields();
ListViewtoCSV(view, filepath);
}
public void ListViewtoCSV(ListView lv,string path)
{
string Info ="";
for (int i = 0; i < lv.Items.Count; i++)
{
for (int j = 1; j < lv.Items.Count; j++)
{
Info += lvUserInformation.Items[i].SubItems[j].Text + ",";
}
Info = Info.TrimEnd(',');
}
if (!File.Exists(path))
{
File.WriteAllText(path, Info);
}
File.AppendAllText(path, Info);
}
請編寫簡單的代碼,可以輕松理解
我希望我已經理解並對此進行了編碼:
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)這不是最佳解決方案,因為每次您調用update table之前,都要先從列和行中清除表,然后再將數據填充到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中調用:此方法將csv文件中的數據填充到datagridview(dgv)中。 並且此方法保存文件中的行
2)方法AddRow(string s)
只需在dgv中添加一行
3)在ClearDataGridView()
中調用方法ClearDataGridView()
: LoadTable()
行和列中清除datagridview
4) UpdateTable()
方法現在更好,因為只需添加之前沒有的行即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.