2016-12-02 21 views
0

我正在將文本文件導入到DGV中,該文本文件包含無序值的列表。我還有一個輸入值的文本框,它顯示了我在DGV中指定的值的數量。我也有一個按鈕,可以對DGV中的值進行排序,這一切都很好。我的問題是如何將DGV重置回無序的位置?這是我嘗試的方法:重置DataGridView

private void resetButton_Click(object sender, EventArgs e) 
{ 
    mergeSortButton.Enabled = true; 
    quickSortButton.Enabled = true; 
    selectionSortButton.Enabled = true; 
    displayDGV.Rows.Clear(); 
    displayDGV.Refresh(); 

    if (File.Exists(DATA_FILE_NAME)) 
    fileIn = File.OpenText(DATA_FILE_NAME); 
    else 
    { 
    MessageBox.Show(DATA_FILE_NAME + " does not exist", "Abort Execution", 
        MessageBoxButtons.OK, MessageBoxIcon.Error); 
    return; 
    } 
    if (listCountTextBox.ReadInt(out index)) 
    for (int i = 1; i <= index; i++) 
     idList.Add(Int32.Parse(fileIn.ReadLine().Replace("-", ""))); 
    fileIn.Close(); 
    DisplayIDList(displayDGV); 

} 

我想我可以清除DGV並將值導回到DGV中。可能不是最好的方法,但它甚至不適合我。我仍然在學習c#的過程。任何見解都會很棒!

謝謝!

回答

0

爲了加載到數據網格的txt文件,你可能會首先加載到列表框,例如, listBox1,然後到一個DataTable。 DataGrid可以使用DataTable作爲其DataSource。然後,您可以指定網格顯示的數量。對於上述情況,您可以使用下面的代碼作爲示例,

private void resetButton_Click(object sender, EventArgs e) 
    { 

     //........ 
     StreamReader fileIn; 
     displayDGV.DataSource = null; 
     displayDGV.Rows.Clear(); 
     displayDGV.Refresh(); 
     displayDGV.EditMode = DataGridViewEditMode.EditProgrammatically; 
     string DATA_FILE_NAME = "C:\\Dgvnums.txt";//e.g. a sample name 
     if (File.Exists(DATA_FILE_NAME)) 
      fileIn = File.OpenText(DATA_FILE_NAME); 
     else 
     { 
      MessageBox.Show(DATA_FILE_NAME + " does not exist", "Abort Execution", 
       MessageBoxButtons.OK, MessageBoxIcon.Error); 
      return; 
     } 
     int lincnt = 0; 
     string teststr = "";//the following counts the Lines included in the txt file 
     while (!fileIn.EndOfStream) 
     { 
      teststr = fileIn.ReadLine(); 
      if (teststr != "") 
      { 
       lincnt++; 
      } 
     } 
     fileIn.Close(); 
     int index = int.Parse(textBox1.Text.ToString()); 
     if (index > lincnt) 
     { 
      MessageBox.Show("THE FILE CONTAINS LESS NUMBERS THAN YOU HAVE SPECIFIED"); 
      return; 
     } 
     fileIn = File.OpenText(DATA_FILE_NAME); 
     listBox1.Items.Clear();//the folloing loads the numbers in the listBox1 
     for (int i = 1; i <= index; i++) 
     { 
      string toreadstr = fileIn.ReadLine(); 
      if (toreadstr.Contains("-")) 
      { 
       toreadstr = toreadstr.Replace("-", ""); 
      } 
      listBox1.Items.Add(Int32.Parse(toreadstr)); 
     } 
     fileIn.Close(); 
     DataTable mytab = new DataTable(); 
     mytab.Columns.Add(); 
     for (int i = 0; i < index; i++) 
     { 
      object[] numbr = new object[1]; 
      numbr[0] = new object(); 
      numbr[0] = (object)listBox1.Items[i]; 
      mytab.LoadDataRow(numbr, true); 
     } 
     displayDGV.DataSource = mytab; 
     displayDGV.Columns[0].HeaderText = "Mynumbers"; 
     displayDGV.AllowUserToAddRows = false; 
     displayDGV.Refresh(); 
    } 

希望這些幫助。

+0

非常有幫助,謝謝! – Luke

0

不過濾您的原始模型。取而代之的是做第二個並過濾。僞代碼,如果你會...

if (No Filter applied) 
{ 
    ApplyToDG(originalModel) 
} 
else 
{ 
    newModel = originalModel; 
    ApplyFilterTo(newModel); 
    ApplyToDG(newModel); 
}