当前位置:编程学习 > C#/ASP.NET >>

DataGridView 使用问题!!!

本人初学DataGridView:
问一下,我在DataGridView界面上输入了十个新行,但是数据库里并没有保存,怎样才能把新添加的数据保存到数据库里。
另外,我想在输入的时候验证数据的正确性和完整性。有没有好的例子。


--------------------编程问答-------------------- 保存的话,需要你自己写SQL语句吧。 --------------------编程问答-------------------- 自己顶 --------------------编程问答-------------------- SQL语句我知道,但是应该有比较简单的或者有效率的方法吧!
不会是这样吧
StringBuilder s = new StringBuilder();
s.Append("insert into tb(col1,col2) select ')
for(int i = 0 ;i< dataGridView1.Rows; i++)
{
     s.Append(dgvProducts[1,i].Value.ToString() + ",");
     s.Append(dgvProducts[1,i].Value.ToString() + " union select");
}

然后运行SQL语句? --------------------编程问答-------------------- 验证输入的完整性 就用 cellEndEdit事件,具体的就是验证那几个格子不能为空

至于一次性保存数据,可以用循环,也可以用dataset更新数据库

用dataset更新数据库,有很多例子,查查就找得到。

提供循环的

if(datagridview.rows.count>0)//确保不为空
{
  for(int i=0;i<=datagridview.rows.count-1;i++)
  {
      string instr="insert into table(A,B) values('"+datagridveiw1.rows[i].cells[0].tostring()+"'...........)";//后面的自己写
      ...............
      .............
  }
}
--------------------编程问答-------------------- cellLeave和cellEndEdit ,有什么区别呢,哪个好,我刚找到这个cellLeave事件

循环我知道,但是由于已经有数据了,所以我还要先记住已有行数,最后再用总数减,所以想找个好用的方法。
而且,用SQL语句如果字段很多,并且行数也很多的话,构造的SQL语句会超出存储过程中varchar的最大值
DateSet保存怎么用? --------------------编程问答-------------------- SqlCommand cmd=connect.CreateCommand();
cmd.CommandText="select ..........";
SqlDataApdater da=new SqlDataApdater(cmd)
Dataset ds=new Dataset();
da.fill(ds);
da.Update(ds);

基本上就这样,具体怎么写,去网上找个吧,多的像蚂蚁!

但你用这方法,有可能出错,更新倒是不会出错,就在保存时容易出错。 --------------------编程问答-------------------- [align=left]        private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString() == "")
            {
                dataGridView1.CurrentCell = dataGridView1[e.ColumnIndex, e.RowIndex];
            }
        }[/align]
我上面这些代码用来判断,如果输入空值,那么输入的焦点还是当前的单元格,可是却没有效果,为什么??? --------------------编程问答-------------------- 顶 --------------------编程问答-------------------- 是不是想达到和DELPHI的那种效果啊,那样的话数据源直接绑定DATATABLE,不要绑定DATAVIEW,DATAVIEW是视图来的
然后直接update(); --------------------编程问答-------------------- 验证的话他会根据DATATABLE对应的字段的类型自动判断的 --------------------编程问答-------------------- 就合你把TEXTBOX里面东西保存到数据库差不多,自己写SQL语句 --------------------编程问答-------------------- 顶一下
--------------------编程问答-------------------- for (int i = 0; i < this.dgvJinhuowupin.RowCount; i++)
                {
                    
               ShangpinId = this.dgvJinhuowupin.Rows[i].Cells["商品编号"].Value.ToString();
               Shangpinname = this.dgvJinhuowupin.Rows[i].Cells["商品名称"].Value.ToString();
               Shangpinguige = this.dgvJinhuowupin.Rows[i].Cells["商品规格"].Value.ToString();
                string a=ShangpinId;
            string b=Shangpinname;
            string c=Shangpinguige;
           string sqlSelect = "insert into Jinhuoshangpinru(shangpinid,shangpinname,Shangpinguige)value('"+a+"','"+b+"','"+c+"')";

            scd = new SqlCommand(sqlSelect,con);
            int result = scd.ExecuteNonQuery();    
            

                    if (result <= 0)
                    {
                        MessageBox.Show("插入数据失败");
                        break;
                    }
                } 

刚做出来的 循环插入数据库  --------------------编程问答-------------------- 验证完整性,可以通过现成的验证控件,设置好你的验证规则就好了,至于如何存到数据库中,基本上除了遍历datagridview没有别的办法,可以用dataset存储数据然后利用dataadapter.update保存数据,也可以用存储过程,也可以拼SQL看具体的要求、需求和个人喜好了
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,