2008-09-20 8 views
0

J'ai peuplé un datagridview à partir d'un datatable. Comment lire depuis datagridview lorsque l'application est en cours d'exécution?Lecture datagridview

+0

Pouvez-vous élaborer davantage sur ce que vous essayez d'accomplir? – Chris

+0

J'ai rempli un datagridview à partir d'un datatable. Si je change une cellule lorsque l'application est en cours d'exécution, je voudrais lire la grille datagrid modifiée dans son intégralité et l'écrire dans un fichier. Je suis coincé sur la bonne façon d'accéder à l'info. –

+0

Re-tag s'il vous plaît. Ce n'est pas une question spécifique à C#. Tag avec ".net" à la place. –

Répondre

2

Comment l'avez-vous peuplé? le DataSource est-il utile comme un BindlingList? Si il est alors quelque chose comme:

BindingSource bindingSource = this.dataGridView1.DataSource as BindingSource; 
//substitute your business object type for T 
T entity = bindingSource.Current as T; 

obtiendriez-vous l'entité liée à la ligne.

Sinon, il y a toujours la datagridview.Columns [n] .Cells [n] .Value mais vraiment je chercherais à l'aide des objets dans le DataSource

Edit: Ah ... un datatable ... righto:

var table = dataGridView1.DataSource as DataTable; 

foreach(DataRow row in table.Rows) 
{ 
    foreach(DataColumn column in table.Columns) 
    { 
     Console.WriteLine(row[column]); 
    } 
} 
1

Vous pouvez parcourir votre datagridview et récupérer chaque cellule.

for(int i =0; i < DataGridView.Rows.Count; i++){ 
    DataGridView.Rows.Columns["columnName"].Text= ""; 
} 

Il existe un exemple here.

0
namespace WindowsFormsApplication2 
{ 
    public partial class Form1 : Form 
    { 
     public static DataTable objDataTable = new DataTable("UpdateAddress"); 

     public Form1() 
     { 
      InitializeComponent(); 

     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      Stream myStream = null; 
      OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

      openFileDialog1.InitialDirectory = "c:\\"; 
      openFileDialog1.Filter = "csv files (*.csv)|*.txt|All files (*.*)|*.*"; 
      openFileDialog1.FilterIndex = 2; 
      openFileDialog1.RestoreDirectory = true; 

      if (openFileDialog1.ShowDialog() == DialogResult.OK) 
      { 
       try 
       { 
        if ((myStream = openFileDialog1.OpenFile()) != null) 
        { 
         string fileName = openFileDialog1.FileName; 

         List<string> dataFile = new List<string>(); 
         dataFile = ReadList(fileName); 
         foreach (string item in dataFile) 
         { 
          string[] temp = item.Split(','); 
          DataRow objDR = objDataTable.NewRow(); 
          objDR["EmployeeID"] = temp[0].ToString(); 
          objDR["Street"] = temp[1].ToString(); 
          objDR["POBox"] = temp[2].ToString(); 
          objDR["City"] = temp[3].ToString(); 
          objDR["State"] = temp[4].ToString(); 
          objDR["Zip"] = temp[5].ToString(); 
          objDR["Country"] = temp[6].ToString(); 
          objDataTable.Rows.Add(objDR); 

         } 
        } 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); 
       } 
      } 
     } 

     public static List<string> ReadList(string filename) 
     { 
      List<string> fileData = new List<string>(); 
      StreamReader sr = new StreamReader(filename); 
      while (!sr.EndOfStream) 
       fileData.Add(sr.ReadLine()); 
      return fileData; 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      objDataTable.Columns.Add("EmployeeID", typeof(int)); 
      objDataTable.Columns.Add("Street", typeof(string)); 
      objDataTable.Columns.Add("POBox", typeof(string)); 
      objDataTable.Columns.Add("City", typeof(string)); 
      objDataTable.Columns.Add("State", typeof(string)); 
      objDataTable.Columns.Add("Zip", typeof(string)); 
      objDataTable.Columns.Add("Country", typeof(string)); 
      objDataTable.Columns.Add("Status", typeof(string)); 

      dataGridView1.DataSource = objDataTable; 
      dataGridView1.Refresh(); 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      // Displays a SaveFileDialog so the user can save the backup of AD address before the update 
      // assigned to Button2. 
      SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
      saveFileDialog1.Filter = "BAK Files|*.BAK"; 
      saveFileDialog1.Title = "Save AD Backup"; 
      saveFileDialog1.ShowDialog(); 

      if (saveFileDialog1.FileName != "") 
      { 
       TextWriter fileOut = new StreamWriter(saveFileDialog1.FileName); 
       //This is where I want read from the datagridview the EmployeeID column and use it in my BackupAddress method. 
      } 

     } 
+1

Probablement aurait été préférable de modifier la question plutôt que d'afficher cela comme une réponse. –