winform中的datagridview数据添加方式
winform中的datagridview数据添加方式,在我现在用的,有常用的两种,一种是直接绑定数据,还有就是对DataGridView添加行数据。因为winform开发的CS结果里面,没有后台行内绑定的方法,只有在bs里面才有
第一种,绑定数据源:
? DataSet ds = new DataSet();
??????????????? SqlDataAdapter adapter = new SqlDataAdapter();
??????????????? try
??????????????? {
??????????????????? gmyConn = gmyConn == null ? mySqlConnection.GetConn() : gmyConn;
??????????????????????? SqlCommand cmd = new SqlCommand(strSql, gmyConn);
??????????????????????? cmd.ExecuteNonQuery();
??????????????????????? adapter.SelectCommand = cmd;
??????????????????????? adapter.Fill(ds, "H_Children_Basic");
??????????????????????? dgvChildren.DataSource = ds.Tables[0];
???????????????????
??????????????? }
??????????????? catch (Exception ex)
??????????????? {
??????????????????? MessageBox.Show("系统故障!" + ex.Message);
??????????????????? return;
??????????????? }
这种方法,比较简单,方便,但是,有个缺点,就是,操作多个表的数据,就不是很好用了。
所以,在绑定多张表的数据的时候,我又去想了想,还有一种方法,更好用,
第二种方法,对控件DataGirdView添加行内数据
上面是绑定一个dataTable。下面的方法就是将查出来的主表,添加到一个List<T>集合里面。
然后,对其集合循环,就可以了,下面我们看看代码怎么实现吧。
?
添加集合:
? SqlCommand cmd = gmyConn.CreateCommand();
??????????????? cmd.CommandText = "select * from H_Acticle_Repertory where ActicleId='" + GoodsId + "' and ImportTime? between '"+this.dtpkStart.Value+"' and '"+this.dtpkEnd.Value+"'";
??????????????? using (SqlDataReader reader = cmd.ExecuteReader())
??????????????? {
??????????????????
??????????????????? while (reader.Read()) //循环读取数据行
??????????????????? {
??????????????????????? H_Acticle_Repertory h_acticle_rep = new H_Acticle_Repertory();
??????????????????????? h_acticle_rep.ActicleId = Convert.ToInt32(reader["ActicleId"]);
??????????????????????? h_acticle_rep.HeadName = (string)reader["HeadName"];
??????????????????????? h_acticle_rep.ImportTime = Convert.ToDateTime(reader["ImportTime"]);
??????????????????????? h_acticle_rep.ImportNum = Convert.ToInt32(reader["ImportNum"]);
??????????????????????? h_Acticle_repertorys.Add(h_acticle_rep);
??????????????????? }
??????????????? }
?
行数据添加
private void setDataGridView(string GoodsId)
??????? {
??????????? if (h_Acticle_repertorys != null)
??????????? {
??????????????? int number = 1;
??????????????? foreach (H_Acticle_Repertory h_acticle1 in getRepertoryByGoodsId(GoodsId))
??????????????? {
??????????????????? this.dgvTotal.Rows.Add(number, getGoodsByID(h_acticle1.ActicleId.ToString()).ActicleName, getGoodsByID(h_acticle1.ActicleId.ToString()).WorkShop, h_acticle1.ImportNum, h_acticle1.ImportTime, h_acticle1.HeadName);
???????????????? number++;//添加的一个序号
??????????????? }
??????????????
??????????? }
??????? }
在这里面,还可以写很多方法,返回值,就可以实现多表添加数据了。
?
?
?