使用DataTable绑定DataGridView后,鼠标点击DataGridView控件时才会显示数据?


在做一个WinForm项目,用到了DataGridView控件显示数据,这个控件并不陌生,之前没少和它打交道,但是得有一年多没碰它了,也有些生疏了...


遇到的问题:

使用DataTable绑定DataGridView后,鼠标点击DataGridView控件时才会显示数据,DataGridView失去焦点时,数据又消失了,以前没遇到过这种情况,在此留个笔记,记下这个问题。


解决问题中……


博客园的一篇帖子终于道出了原因:

通过按钮的button_Click事件动态添加dataGridView的列和数据时,为何非得点击dataGridView数据才显示出来?


没错,我的原因就是在于创建DataTable时创建错了,才会导致出现这种奇怪现象。


贴一段正确创建DataTable的代码,并绑定到DataGridView上:


            DataTable dt = new DataTable();

            DataColumn[] columns2 = 
            {
                new DataColumn("DeviceName"),
                new DataColumn("IP"),
                new DataColumn("MAC")
            };

            dt.Columns.AddRange(columns2);

            DataRow row2 = dt.NewRow();

            row2["DeviceName"] = "AAA";
            row2["IP"] = "192.168.1.1";
            row2["MAC"] = "ff-ff-ff-ff-ff-ff";

            dt.Rows.Add(row2);


            this.dgvList.Columns["colDeviceName"].DataPropertyName = "DeviceName";
            this.dgvList.Columns["colIP"].DataPropertyName = "IP";
            this.dgvList.Columns["colMAC"].DataPropertyName = "MAC";

            this.dgvList.AutoGenerateColumns = false;
            this.dgvList.DataSource = dt;


总结:

创建DataTable时,先创建Column,再创建Row,两者不可缺一,否则无法构成一个完整的DataTable。



你可能感兴趣的:(.NET)