J'ai peuplé un datagridview à partir d'un datatable. Comment lire depuis datagridview lorsque l'application est en cours d'exécution?Lecture datagridview
Répondre
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]);
}
}
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.
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.
}
}
Probablement aurait été préférable de modifier la question plutôt que d'afficher cela comme une réponse. –
Vous pouvez jeter un oeil à DataTable.WriteXml, et son frère DataTable.ReadXml. Pas de problème, pas de sauvegarde d'un DataTable.
- 1. en lecture seule DataGridView et IEditableObject
- 2. ReadOnly rows in DataGridView
- 3. DataGridView sélectionnant "Ligne complète"
- 4. DataGridView
- 5. DataGridView enfant dans un DataGridView
- 6. Repositionnement de ligne DataGridView
- 7. datagridview rafraîchir
- 8. DataGridView Tri
- 9. Filtrage DataGridView
- 10. Datagridview Affichage
- 11. DataGridView Binding
- 12. DataGridView navigation sur Entrée/Retour
- 13. C# DataGridView - Image transparente
- 14. DataGridView Mise à l'échelle
- 15. Bon DataGridView tutoriel
- 16. Vider un DataGridView
- 17. Datagridview modèle virtuel combobox
- 18. VB.NET 2005 DataGridView Redessiner
- 19. datagridview dans C#
- 20. WinForms DataGridView Question
- 21. BindingSource et DataGridView
- 22. UpdateCellValue() dans un Datagridview
- 23. mise à jour datagridview
- 24. datagridview + Object liaison personnalisée
- 25. DatagridView Checkbox Vérifié?
- 26. Databound DataGridView - IDataError
- 27. Colonne DataGridview Redimensionner Problème
- 28. Tri DataGridView par programme
- 29. Comment actualiser Winforms DataGridView?
- 30. Supprimer la ligne DataGridView
Pouvez-vous élaborer davantage sur ce que vous essayez d'accomplir? – Chris
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. –
Re-tag s'il vous plaît. Ce n'est pas une question spécifique à C#. Tag avec ".net" à la place. –