急救: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];
你可以将数据库数据直接绑定到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();//关闭数据库连接
从方法上是应该一样的,因为你填充的数据都是一样的!注意看每行等号后面,每行都一样。
那我应该怎么改呢?
dataGridView1.Rows[i].Cells[0].Value = Convert.ToString(sjjl.get_Collect(0));
这变成每行第一单元的值都一样了
你可以将数据库数据直接绑定到dataGridView1SqlConnection 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); --------------------编程问答-------------------- 你修改成我发的这个方式 就可,
--------------------编程问答--------------------
sjjl.get_Collect获得的值没有变化,肯定每行都一样啊。sjjl表的数据没有行和列这一说么,这sjj1获得的值是表结构还是就一条单数据啊。
目测循环没有问题,
但是Convert.ToString(sjjl.get_Collect(0))这一句代码有问题,
这句代码跟循环没有关系,所以每次循环都是同样的值。
建议用数据绑定,如果非要循环,sjjl.get_Collect(0)也要一起跟着一起循环。
把sjjl.get_Collect贴出来吧,大家帮你想办法循环。 --------------------编程问答--------------------
是表结构。
sjjl.get_Collect获得的值没有变化,肯定每行都一样啊。sjjl表的数据没有行和列这一说么,这sjj1获得的值是表结构还是就一条单数据啊。
那你就循环赋值啊,sjjl.get_Collect也要循环,可以用i来写sjjl.get_Collect的哪一行对应datagridview的哪一行。 --------------------编程问答--------------------
是表结构。
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代码贴出来吧。
假设你sjjl.get_Collect返回的是DataTable类型,那循环这样写就对了:
dataGridView1.Rows[i].Cells[0].Value = Convert.ToString(sjjl.get_Collect.Rows[i][0]);
dataGridView每一行与DataTable每一行都要一一对应起来。 --------------------编程问答--------------------
是表结构。
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的值换一条新的么 --------------------编程问答--------------------
这是要显示的内容。
你把这要显示的编辑成一个datatable,然后用datagridview绑定这个datatable不行么。
这是要显示的内容。
那要怎么写啊 --------------------编程问答--------------------
这是要显示的内容。
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]这个好像不行吧
--------------------编程问答--------------------
你把这要显示的编辑成一个datatable,然后用datagridview绑定这个datatable不行么。
这是要显示的内容。
那要怎么写成datatable --------------------编程问答--------------------
你把这要显示的编辑成一个datatable,然后用datagridview绑定这个datatable不行么。
这是要显示的内容。
那要怎么写成datatable
你这显示的表是怎么得来的,是从数据库里取出来的么,,还有你那个sjjl.get_Collect只能默认获得表的一条数据么,没有个变量来标识获得第几条数据么。 --------------------编程问答--------------------
你把这要显示的编辑成一个datatable,然后用datagridview绑定这个datatable不行么。
这是要显示的内容。
那要怎么写成datatable
你这显示的表是怎么得来的,是从数据库里取出来的么,,还有你那个sjjl.get_Collect只能默认获得表的一条数据么,没有个变量来标识获得第几条数据么。
我想问您 一个卡号只能一个人使用的代码该怎么写呢, --------------------编程问答--------------------
你把这要显示的编辑成一个datatable,然后用datagridview绑定这个datatable不行么。
这是要显示的内容。
那要怎么写成datatable
你这显示的表是怎么得来的,是从数据库里取出来的么,,还有你那个sjjl.get_Collect只能默认获得表的一条数据么,没有个变量来标识获得第几条数据么。
我想问您 一个卡号只能一个人使用的代码该怎么写呢,
卡号上机的时候加个判断此卡号是否已经被使用啊,如果被使用就不允许重复上机啊。你不是有个字段是ture和false判断他是否上机么,你查询一下,select * from 表名 where cardNo ='"卡号"' and 正上机=true,如果有数据就不允许他上机就行。
补充:.NET技术 , C#