将textbox和datagridview数据写入单个文件的方法 [英] Ways to write both textbox and datagridview data into a single file

查看:72
本文介绍了将textbox和datagridview数据写入单个文件的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hello Guys,



我对c#很陌生,因此需要你的建议 - 我试图找出从文本框和datagridview写入数据的方法一个表单到一个文件。



试图通过网络搜索类似的东西,但不幸的是发现有关分别编写文本框(序列化)或datagridview数据(xml)的信息。



我需要的是将来自所有文本框和datagridview的数据合并到一个文件中,以便以后可以将它读回给它们。



文本框控件以及datagridview可能包含多行文本。 datgridview是未绑定的。



请帮助...

如有任何信息,请联系:)

Hello Guys,

I am pretty new to c#, thus need your advice - I am trying to figure out the ways to write data from textboxes and datagridview on a form to a file.

Tried to search for a similar things thru net, but unfortunately found info about writing either textboxes (serialization) or datagridview data (xml) separately.

What I need is to combine the data coming from all textboxes and a datagridview into a single file, so that later could read it back to them.

Textboxes controls as well as datagridview may contain multiline texts. The datgridview is unbound.

Please help...
Any info is appreciated :)

推荐答案

你可以通过多种方式实现,一种方法是使用数据集

例如



You can do it in many ways, one way is use dataset
For Example

//Declare a table
DataTable dtbl = new DataTable("TextBoxValues");
//Add columns for each text box
dtbl.Columns.Add("Textbox1", typeof(string));
//Declare data row
DataRow dr = dtbl.NewRow();
//Assign column values
dr["Textbox1"] = Textbox1.Text;
//Addd row to datatable
dtbl.Rows.Add(dr);
//Declare a dataset
DataSet ds = new DataSet();
//Add table to dataset
ds.Tables.Add(dtbl);
//Add grid bound table to dataset
//Assume your datasource is a datatable
ds.Tables.Add((DataTable)DataGridview1.DataSource);
//Write data with schema to xml file
ds.WriteXml("C:\\test\\test.xml", XmlWriteMode.WriteSchema);


终于让它运转了(下面是任何人可能感兴趣的代码 - 可能看起来不理想,但至少对我有用: )):



Finally got it working (below is the code for anyone might be interested in - could appear not ideal, but at least works for me:)):

//Writing script to file
        private void SaveToFile()
        {

            DataTable dtbl = new DataTable("TestScriptHeader");
            dtbl.Columns.Add("TestScriptDescription", typeof(string));
            dtbl.Columns.Add("TestScriptPre-Cond", typeof(string));
            DataRow dr = dtbl.NewRow();
            dr["TestScriptDescription"] = DescriptionText.Text;
            dr["TestScriptPre-Cond"] = PreliminaryConditionsText.Text;
            dtbl.Rows.Add(dr);
            DataSet DS = new DataSet();
            DS.Tables.Add(dtbl);

            ////
            DataTable tsgDataTable = new DataTable("TestScriptGridDataTable");

            foreach (DataGridViewColumn column in TestScriptGrid.Columns)
            {
                if (column.Visible)
                {
                    tsgDataTable.Columns.Add(column.HeaderText);
                }
            }

            object[] cellValues = new object[TestScriptGrid.Columns.Count];
            foreach (DataGridViewRow row in TestScriptGrid.Rows)
            {
                for (int i = 0; i < row.Cells.Count; i++)
                {
                    cellValues[i] = row.Cells[i].Value;
                }
                tsgDataTable.Rows.Add(cellValues);
            }
            DS.Tables.Add(tsgDataTable);
            ////

            DS.WriteXml(@"C:\temp\1111111111.xml", XmlWriteMode.WriteSchema);
        }
        
        //Open script file
        private void FileOpen_Click(object sender, EventArgs e)
        {
            if (opnFileDialog.ShowDialog() == DialogResult.OK)
            {
                fileName = opnFileDialog.FileName;

                DataSet DSFromXML = new DataSet();
                DSFromXML.ReadXml(fileName, XmlReadMode.ReadSchema);

                DataRow dr = DSFromXML.Tables["TestScriptHeader"].Rows[0];
                DescriptionText.Text = dr["TestScriptDescription"].ToString();
                PreliminaryConditionsText.Text = dr["TestScriptPre-Cond"].ToString();

                //////Retrieving data from xml to TestScriptGrid
                DataTable DTFromXMLtoGrid = DSFromXML.Tables["TestScriptGridDataTable"];
                object[] columnCellValues = new object[DTFromXMLtoGrid.Columns.Count];
                TestScriptGrid.Rows.Clear();

                foreach (DataRow DRdgv in DTFromXMLtoGrid.Rows)
                {
                    if (DTFromXMLtoGrid.Rows.IndexOf(DRdgv) == DTFromXMLtoGrid.Rows.Count - 1)
                        break;
                    for (int c = 0; c < DRdgv.ItemArray.Count(); c++)
                    {
                        columnCellValues[c] = DRdgv.ItemArray[c];
                    }
                    TestScriptGrid.Rows.Add(columnCellValues);
                }
            }
        }


这篇关于将textbox和datagridview数据写入单个文件的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆