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

急救:datagridview添加数据以及循环问题

private void button5_Click(object sender, EventArgs e)
        {
            
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
            

            dataGridView1.Rows[i].Cells[0].Value = Convert.ToString(sjjl.get_Collect(0));
            dataGridView1.Rows[i].Cells[1].Value = Convert.ToDateTime(sjjl.get_Collect(1));
            dataGridView1.Rows[i].Cells[2].Value = Convert.ToInt32(sjjl.get_Collect(2));
            dataGridView1.Rows[i].Cells[3].Value = Convert.ToString(sjjl.get_Collect(3));
            dataGridView1.Rows[i].Cells[4].Value = Convert.ToString(sjjl.get_Collect(4));
        }
           
        }

对 datagridview 里添加数据库里sjjl表的数据,设了rows100行,  但是第1行的内容连续出了100行。其他数据挑不出来。 --------------------编程问答-------------------- 报错么?加断点调试 --------------------编程问答-------------------- 从方法上是应该一样的,因为你填充的数据都是一样的!注意看每行等号后面,每行都一样。 --------------------编程问答--------------------  dataGridView1.Rows[i].Cells[0].Value = Convert.ToString(sjjl.get_Collect(0));
这变成每行第一单元的值都一样了 --------------------编程问答-------------------- 数据源里面的数据是否正确? --------------------编程问答-------------------- http://blog.csdn.net/lllljz/article/details/7456283 --------------------编程问答-------------------- 此类问题最好用断点调试一下 --------------------编程问答-------------------- sjjl是什么东西,他也应该是一个数据集合,根据i的变化,获取不同索引的数据 --------------------编程问答-------------------- sjjl.get_Collect获得的值没有变化,肯定每行都一样啊。sjjl表的数据没有行和列这一说么,这sjj1获得的值是表结构还是就一条单数据啊。 --------------------编程问答--------------------
 DataSet ds = new DataSet();
 ds = myop.QueryDB(sql);//sql是数据库查询
 dataGridView1.DataSource = ds.Tables[0];
--------------------编程问答--------------------
引用 3 楼 wind_cloud2011 的回复:
 dataGridView1.Rows[i].Cells[0].Value = Convert.ToString(sjjl.get_Collect(0));
这变成每行第一单元的值都一样了
那我应该怎么改呢? --------------------编程问答--------------------
引用 4 楼 hxm20003 的回复:
数据源里面的数据是否正确?
都是正确的 --------------------编程问答--------------------
引用 10 楼 xing19910113 的回复:
Quote: 引用 3 楼 wind_cloud2011 的回复:

 dataGridView1.Rows[i].Cells[0].Value = Convert.ToString(sjjl.get_Collect(0));
这变成每行第一单元的值都一样了
那我应该怎么改呢?

你可以将数据库数据直接绑定到dataGridView1
 SqlConnection conn = new SqlConnection("server=192.168.1.5;uid=sa;pwd=sa;database=data");//建立数据库连接
          SqlCommand cmd = new SqlCommand("select * from table", conn);//执行数据连接
          DataSet ds = new DataSet();
          SqlDataAdapter da = new SqlDataAdapter(cmd);
          da.Fill(ds);
          this.dataGridView1.DataSource = ds.Tables[0];//数据源
          this.dataGridView1.AutoGenerateColumns = false;//不自动
          conn.Close();//关闭数据库连接
--------------------编程问答--------------------
引用 2 楼 pfe_Nova 的回复:
从方法上是应该一样的,因为你填充的数据都是一样的!注意看每行等号后面,每行都一样。
那要写个什么样的循环呢 --------------------编程问答--------------------
引用 12 楼 wind_cloud2011 的回复:
Quote: 引用 10 楼 xing19910113 的回复:

Quote: 引用 3 楼 wind_cloud2011 的回复:

 dataGridView1.Rows[i].Cells[0].Value = Convert.ToString(sjjl.get_Collect(0));
这变成每行第一单元的值都一样了
那我应该怎么改呢?

你可以将数据库数据直接绑定到dataGridView1
 SqlConnection conn = new SqlConnection("server=192.168.1.5;uid=sa;pwd=sa;database=data");//建立数据库连接
          SqlCommand cmd = new SqlCommand("select * from table", conn);//执行数据连接
          DataSet ds = new DataSet();
          SqlDataAdapter da = new SqlDataAdapter(cmd);
          da.Fill(ds);
          this.dataGridView1.DataSource = ds.Tables[0];//数据源
          this.dataGridView1.AutoGenerateColumns = false;//不自动
          conn.Close();//关闭数据库连接


可是我数据库已经是连好的了, 用
xszf.Open("Provider=SQLOLEDB;Server=.;Database=学生自费上机管理系统;User ID=sa;Password=tjzj;", null, null, 0);
            sjb.Open("上机卡", xszf, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic, -1);
            sjjl.Open("上机记录", xszf, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic, -1); --------------------编程问答-------------------- 你修改成我发的这个方式 就可,
--------------------编程问答--------------------
引用 8 楼 jiang_qi123 的回复:
sjjl.get_Collect获得的值没有变化,肯定每行都一样啊。sjjl表的数据没有行和列这一说么,这sjj1获得的值是表结构还是就一条单数据啊。
  是表结构。  --------------------编程问答-------------------- 是表,应该很多条记录,所以你将数据填充到表里,再绑定到datagridview里,你可以baidu找找 --------------------编程问答-------------------- 呵呵,每行一样就对了。
目测循环没有问题,
但是Convert.ToString(sjjl.get_Collect(0))这一句代码有问题,
这句代码跟循环没有关系,所以每次循环都是同样的值。

建议用数据绑定,如果非要循环,sjjl.get_Collect(0)也要一起跟着一起循环。
把sjjl.get_Collect贴出来吧,大家帮你想办法循环。 --------------------编程问答--------------------
引用 16 楼 xing19910113 的回复:
Quote: 引用 8 楼 jiang_qi123 的回复:

sjjl.get_Collect获得的值没有变化,肯定每行都一样啊。sjjl表的数据没有行和列这一说么,这sjj1获得的值是表结构还是就一条单数据啊。
  是表结构。 

那你就循环赋值啊,sjjl.get_Collect也要循环,可以用i来写sjjl.get_Collect的哪一行对应datagridview的哪一行。 --------------------编程问答--------------------
引用 19 楼 jiang_qi123 的回复:
Quote: 引用 16 楼 xing19910113 的回复:

Quote: 引用 8 楼 jiang_qi123 的回复:

sjjl.get_Collect获得的值没有变化,肯定每行都一样啊。sjjl表的数据没有行和列这一说么,这sjj1获得的值是表结构还是就一条单数据啊。
  是表结构。 

那你就循环赋值啊,sjjl.get_Collect也要循环,可以用i来写sjjl.get_Collect的哪一行对应datagridview的哪一行。


 private void button5_Click(object sender, EventArgs e)
        {
            sjjl.MoveFirst(); 
            
            

            {   for (int i = 0; i < dataGridView1.Rows.Count; i++)

            {
               
                while (sjjl.EOF ==true)

                    for (int m = 0; m <= 3; m++)
                    {
                        dataGridView1.Rows[i].Cells[m ].Value = Convert.ToString(sjjl.get_Collect(m));

                        sjjl.MoveNext();
                    }
               
               }
           sjjl.MoveNext();
           
        }
            }
              

这样对吗? --------------------编程问答-------------------- 这是要显示的内容。 --------------------编程问答--------------------
引用 21 楼 xing19910113 的回复:
这是要显示的内容。


sjjl.get_Collect代码贴出来吧。
假设你sjjl.get_Collect返回的是DataTable类型,那循环这样写就对了:
 dataGridView1.Rows[i].Cells[0].Value = Convert.ToString(sjjl.get_Collect.Rows[i][0]);

dataGridView每一行与DataTable每一行都要一一对应起来。 --------------------编程问答--------------------
引用 20 楼 xing19910113 的回复:
Quote: 引用 19 楼 jiang_qi123 的回复:

Quote: 引用 16 楼 xing19910113 的回复:

Quote: 引用 8 楼 jiang_qi123 的回复:

sjjl.get_Collect获得的值没有变化,肯定每行都一样啊。sjjl表的数据没有行和列这一说么,这sjj1获得的值是表结构还是就一条单数据啊。
  是表结构。 

那你就循环赋值啊,sjjl.get_Collect也要循环,可以用i来写sjjl.get_Collect的哪一行对应datagridview的哪一行。


 private void button5_Click(object sender, EventArgs e)
        {
            sjjl.MoveFirst(); 
            
            

            {   for (int i = 0; i < dataGridView1.Rows.Count; i++)

            {
               
                while (sjjl.EOF ==true)

                    for (int m = 0; m <= 3; m++)
                    {
                        dataGridView1.Rows[i].Cells[m ].Value = Convert.ToString(sjjl.get_Collect(m));

                        sjjl.MoveNext();
                    }
               
               }
           sjjl.MoveNext();
           
        }
            }
              

这样对吗?

不对,你这样写出来还是一样的结果。你能有个变量叫sjjl.get_Collect的值换一条新的么 --------------------编程问答--------------------
引用 21 楼 xing19910113 的回复:
这是要显示的内容。
你把这要显示的编辑成一个datatable,然后用datagridview绑定这个datatable不行么。 --------------------编程问答--------------------
引用 24 楼 jiang_qi123 的回复:
Quote: 引用 21 楼 xing19910113 的回复:

这是要显示的内容。
你把这要显示的编辑成一个datatable,然后用datagridview绑定这个datatable不行么。



那要怎么写啊 --------------------编程问答--------------------
引用 22 楼 cuixt 的回复:
Quote: 引用 21 楼 xing19910113 的回复:

这是要显示的内容。


sjjl.get_Collect代码贴出来吧。
假设你sjjl.get_Collect返回的是DataTable类型,那循环这样写就对了:
 dataGridView1.Rows[i].Cells[0].Value = Convert.ToString(sjjl.get_Collect.Rows[i][0]);

dataGridView每一行与DataTable每一行都要一一对应起来。


sjjl.get_Collect.Rows[i][0]这个好像不行吧
--------------------编程问答--------------------
引用 24 楼 jiang_qi123 的回复:
Quote: 引用 21 楼 xing19910113 的回复:

这是要显示的内容。
你把这要显示的编辑成一个datatable,然后用datagridview绑定这个datatable不行么。


那要怎么写成datatable --------------------编程问答--------------------
引用 27 楼 xing19910113 的回复:
Quote: 引用 24 楼 jiang_qi123 的回复:

Quote: 引用 21 楼 xing19910113 的回复:

这是要显示的内容。
你把这要显示的编辑成一个datatable,然后用datagridview绑定这个datatable不行么。


那要怎么写成datatable

你这显示的表是怎么得来的,是从数据库里取出来的么,,还有你那个sjjl.get_Collect只能默认获得表的一条数据么,没有个变量来标识获得第几条数据么。 --------------------编程问答--------------------
引用 28 楼 jiang_qi123 的回复:
Quote: 引用 27 楼 xing19910113 的回复:

Quote: 引用 24 楼 jiang_qi123 的回复:

Quote: 引用 21 楼 xing19910113 的回复:

这是要显示的内容。
你把这要显示的编辑成一个datatable,然后用datagridview绑定这个datatable不行么。


那要怎么写成datatable

你这显示的表是怎么得来的,是从数据库里取出来的么,,还有你那个sjjl.get_Collect只能默认获得表的一条数据么,没有个变量来标识获得第几条数据么。


我想问您   一个卡号只能一个人使用的代码该怎么写呢, --------------------编程问答--------------------
引用 29 楼 xing19910113 的回复:
Quote: 引用 28 楼 jiang_qi123 的回复:

Quote: 引用 27 楼 xing19910113 的回复:

Quote: 引用 24 楼 jiang_qi123 的回复:

Quote: 引用 21 楼 xing19910113 的回复:

这是要显示的内容。
你把这要显示的编辑成一个datatable,然后用datagridview绑定这个datatable不行么。


那要怎么写成datatable

你这显示的表是怎么得来的,是从数据库里取出来的么,,还有你那个sjjl.get_Collect只能默认获得表的一条数据么,没有个变量来标识获得第几条数据么。


我想问您   一个卡号只能一个人使用的代码该怎么写呢,

卡号上机的时候加个判断此卡号是否已经被使用啊,如果被使用就不允许重复上机啊。你不是有个字段是ture和false判断他是否上机么,你查询一下,select * from 表名 where cardNo ='"卡号"' and 正上机=true,如果有数据就不允许他上机就行。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,