WPF显示txt数据内容到gridcontrol

2017-08-19 11:50:35来源:CSDN作者:sinat_32836157人点击

分享

WPF显示txt数据内容到gridcontrol

在尝试将txt中数据加载到WPF表格控件上的过程中尝试了几种方法。但是都没有找到可以不绑定数据源就显示数据的控件及方法。于是最后自己想了这个办法解决将txt数据加载到gridcontrol上显示,及通过保存数据到DataSet里,然后添加到gridcontrol中的方法。

private void QueryBtn_Click(object sender, RoutedEventArgs e)        {            string road;            string str;            string[] temp1;            int m = 0;                                                    //设置m为了遍历txt存储到temp数组中的内容            string filePath = null;            DataSet Result = new DataSet();            DataTable ds = new DataTable("test");                         //创建test数据表为了将txt中数据存储进去,方便在gridcontrol显示            System.Windows.Forms.OpenFileDialog fileroad = new System.Windows.Forms.OpenFileDialog();   //点击文件获取路径            if (fileroad.ShowDialog() == System.Windows.Forms.DialogResult.OK)            {                filePath = fileroad.FileName;            }                var file = File.Open(filePath, FileMode.Open);               //List<string> txt = new List<string>();            string line;            using (var stream = new StreamReader(file, System.Text.Encoding.Default))            {                str = stream.ReadLine();                                  //读取txt中一行内容                temp1 = str.Split(new char[] { ' ', '/t' });              //按空格符将这一行内容分开            }            StreamReader sr = new StreamReader(filePath, Encoding.Default);            line = sr.ReadToEnd();                                        //读取txt中全部内容               //string line = sr.ReadLine();            //string str = sr.ReadLine();            string[] temp = line.Split(new char[] { ' ', '/t', '/n' });    //按空格和换行符将txt中内容分开            for (int k = 0; k < temp1.Length; k++)            {                ds.Columns.Add(temp1[k].ToString(), Type.GetType("System.String"));   //创建数据表的列数            }            //MessageBox.Show(str.ToString());            for (int k1 = 0; k1 < (int)temp.Length / temp1.Length + 1; k1++)          //创建数据表行数,通过总的数组个数除以每行的个数得到数据表行数            {                DataRow dr = ds.NewRow();                ds.Rows.Add(dr);            }            //写入数据            for (int i = 0; i <= (int)temp.Length / temp1.Length - 2; i++)              //问题:当取i <= (int)temp.Length / temp1.Length - 1及大于这个值的时候总会出现中断,超出数组            {                for (int j = 0; j <= temp1.Length - 1; j++)                {                    if (m < temp.Length)                    {                        ds.Rows[i][temp1[j].ToString()] = temp[m + temp1.Length];                        m++;                    }                    else                        break;                }            }            //将数据表写入DataSet中            Result.Tables.Add(ds);            HistoryData.ItemsSource = Result.Tables[0];        }

主要的方法是通过空格和换行符将txt中的数据分开保存到数组中。例如txt中第一行数据是:1 23 343 那么数组中分别保存1,23,343三个数。然后将数组中的数据通过两次循环保存到dataset的新建的数据表里面。然后直接添加到gridcontrol显示。值得注意的是新建Table需要自己定义行列数量否则不能添加。具体操作已经写在注释里面。

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台