2014-09-28 40 views
0

所以,我有我的對準一個問題,當我CSV文件導入到我的ListView控件如何排列在列表視圖的列CSV文件中的值時,有在ListView控件的默認值

這就是問題所在:

enter image description here

在ListView控件defualt值是 「標記」 和 「喬」。 當我上傳一個csv文件時,它將從第一列開始的下一行插入值。

正確的輸出需要是這樣的:需要

enter image description here

的CSV值與默認值馬克和喬

注意對齊:這是我的虛擬CSV中的值文件是:

ASD,1234

DFG,1234

這是我迄今所構建的代碼...

OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
openFileDialog1.Filter = "CSV Files (*.csv)|*.csv|All Files (*.*)|*.*"; 
openFileDialog1.FilterIndex = 1; 
if (openFileDialog1.ShowDialog() == DialogResult.OK) 
{ 
    if (MessageBox.Show("Are you sure you want to import the data from \n " + openFileDialog1.FileName + "?", "Are you sure?", MessageBoxButtons.YesNo) == DialogResult.Yes) 
    { 
     filename = openFileDialog1.FileName; 
     StreamReader sr = new StreamReader(filename); 
     string csv = File.ReadAllText(openFileDialog1.FileName); 

     sr.Close();     

     var lines = File.ReadAllLines(filename); 
     foreach (string line in lines) 
     { 
      var parts = line.Split(','); 
      ListViewItem lvi = new ListViewItem(parts[0]); 
      lvi.SubItems.Add(parts[1]); 
      listView1.Items.Add(lvi); 
     } 
    } 
    else 
    { 
    } 
} 

感謝那些誰願意幫我簡單的問題的專家。 。 。

+0

也許不是創建一個新的ListViewItem,而是您可以獲取默認值並添加額外的子項' – 2014-09-28 22:23:35

+0

是的。這就是我也在想,但我對我應該如何做到這一點有點失落。 – 2014-09-28 22:29:49

回答

0

你真的需要修改現有的項目不能添加新的,一種選擇可能是跟蹤指數,並用它來抓取該項目,並添加SubItemsListViewItem

int index = 0; 
var lines = File.ReadAllLines(""); 
foreach (string line in lines) 
{ 
    var parts = line.Split(','); 
    // TODO: check if the item at index exists first 
    var existingItem = listView1.Items[index]; 
    existingItem.SubItems.Add(parts[0]); 
    existingItem.SubItems.Add(parts[1]); 
    index++; 
} 

注意:您應該在索引周圍添加一些錯誤檢查,或者如果csv包含的行數多於ListViewItems的項數,您可能會得到一個IndexOutOfRangeException

+0

感謝您的解釋。按照您的指示添加了錯誤檢查代碼。再次感謝 。 – 2014-09-28 23:02:06