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集合里面。

然后,对其集合循环,就可以了,下面我们看看代码怎么实现吧。

 

添加集合:

  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++;//添加的一个序号
                }
              
            }
        }

在这里面,还可以写很多方法,返回值,就可以实现多表添加数据了。

 

 

 

你可能感兴趣的:(asp.net)