嗨我有一個程序來解析CSV並將其填充到DataGridView。C#從其他類返回填充DataGridView
當我做這樣它的偉大工程:
openFileDialog1.Filter = "CSV Files(*.csv)|*.csv";
openFileDialog1.FilterIndex = 1;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
txtCsvSource.Text = openFileDialog1.FileName;
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
using (CachedCsvReader csv = new CachedCsvReader(new StreamReader(txtCsvSource.Text, iso), true))
{
csv.MissingFieldAction = MissingFieldAction.ReplaceByEmpty;
dataGridView1.DataSource = csv;
}
}
但當Im做這樣的:
openFileDialog1.Filter = "CSV Files(*.csv)|*.csv";
openFileDialog1.FilterIndex = 1;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
txtCsvSource.Text = openFileDialog1.FileName;
dataGridView1.DataSource = QrFunctions.parsecsv(txtCsvSource.Text);
dataGridView1.Update();
}
與QrFunctions.parsecsv是這樣的:
public CachedCsvReader parsecsv(string csvpath)
{
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
using (CachedCsvReader csv = new CachedCsvReader(new StreamReader(csvpath, iso), true))
{
csv.MissingFieldAction = MissingFieldAction.ReplaceByEmpty;
return csv;
}
}
DataGridView爲空...爲什麼?我根本不知道:-(我只是想使用此功能在另一類解析,所以我創建的類QrFunctions。
這並沒有改變任何東西:-( 我不知道爲什麼它應該工作,你只是複製CachedCsvReader並返回第二個 – MartiniMoe 2012-03-07 08:59:07
@MartiniMoe - 這個答案看起來對於我來說也是正確的,因爲在你離開你的函數時使用了你的csv閱讀器。你能讓我們知道CachedCsvReader類來自哪裏,所以我們可以複製代碼嗎? – 2012-03-07 09:12:36
@MartiniMoe在你的第一個代碼示例中,你不必使用dataGridView1.Update();將dataGridView1綁定到CachedCsvReader時,爲什麼在第二個代碼示例中使用它?還可以使用調試器來檢查,當您獲取任何數據時在第二個代碼示例中設置數據源屬性。 – alykhalid 2012-03-07 09:21:23