سؤال

لقد قمت بملء datagridview من datatable.كيف أقرأ من datagridview عندما يكون التطبيق قيد التشغيل؟

هل كانت مفيدة؟

المحلول

كيف سكنتها؟هل مصدر البيانات شيء مفيد مثل BindlingList؟إذا كان الأمر كذلك مثل:

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

سوف تحصل على الكيان المنضم إلى الصف.

بخلاف ذلك، هناك دائمًا datagridview.Columns[n].Cells[n].Value ولكن في الحقيقة سأنظر في استخدام الكائنات الموجودة في DataSource

يحرر:آه...جدول بيانات...حق:

 var table = dataGridView1.DataSource as DataTable;

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

نصائح أخرى

يمكنك التكرار من خلال datagridview الخاص بك واسترداد كل خلية.

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

هناك مثال هنا.

قد ترغب في إلقاء نظرة على DataTable.WriteXml, ، وهو شقيق DataTable.ReadXml.لا ضجة، لا داعي لتوفير DataTable.

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.
            }

        }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top