单击dataGridView某一行时将dataGridView当前选择行的值赋值给textBox某个文本框

您所在的位置:网站首页 vb中怎么在列表框中添加一条记录 单击dataGridView某一行时将dataGridView当前选择行的值赋值给textBox某个文本框

单击dataGridView某一行时将dataGridView当前选择行的值赋值给textBox某个文本框

2024-07-15 06:57| 来源: 网络整理| 查看: 265

 

在用DataGridView显示数据库的数据,然后赋值给textBox时,测试了三种方法

测试了CurrentRow, SelectedCells和Rows三种方法:1. CurrentRow:单击DataGridView任一位置都可以赋值到textBox,这种方法最好用.

private void dgvACC_CellClick(object sender, DataGridViewCellEventArgs e) { string data1 = dgvACC.CurrentRow.Cells[0].Value.ToString(); string data2 = dgvACC.CurrentRow.Cells[1].Value.ToString(); txtACC.Text = data1; txtPWD.Text = data2; }

2. SelectedCells: 用SelectedRows时必须 单击该行最前面的的方格而不能点击表格里有数据的单元格,如果点击表内则会报错: 索引超出范围。必须为非负值并小于集合大小。参数名: index.

用断点调试查看了一下, txtPWD.Text的Count值等于txtACC.Text的Count值,显然是个错误.

private void dgvACC_CellClick(object sender, DataGridViewCellEventArgs e) { string data2 = dgvACC.SelectedCells[0].Value.ToString(); string data3 = dgvACC.SelectedCells[2].Value.ToString(); txtACC.Text = data1; txtPWD.Text = data2; }

 

 

3. 而第三种方式是教材上提供的案例Rows, 这个方法缺点就是DataGridView第一行无法选中,其他都正常

private void dgvACC_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex>0) { String strACC = (String)dgvACC.Rows[e.RowIndex].Cells[0].Value; sqlcon = new SqlConnection(Myclass.Myclass1.sqlCon); SqlDataAdapter sqlda = new SqlDataAdapter("select AccountID,Password from tb_Power where AccountID=”strACC”", sqlcon); DataSet myds = new DataSet(); sqlda.Fill(myds); if (myds.Tables[0].Rows.Count >0) { txtACC.Text = myds.Tables[0].Rows[0][1].ToString(); txtPWD.Text = myds.Tables[0].Rows[0][2].ToString(); } } }

对比以上三种方法,新手小白使用CurrentRow最完美.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3