一道C#语言程序题!!这道问题困扰了我很长时间了!希望各位大侠给予帮助!!十分感谢!

publicForm1(){InitializeComponent();}SqlDataAdaptersda;SqlConnectionconn;DataSetds;pr... public Form1()
{
InitializeComponent();
}

SqlDataAdapter sda;
SqlConnection conn;
DataSet ds;
private void Form1_Load(object sender, EventArgs e)
{
conn = new SqlConnection("server=(local);initial catalog=db_test;integrated security=true;");
SqlCommand cmd = new SqlCommand("select*from tb_002", conn);
sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
ds = new DataSet();
sda.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];

}

private void button1_Click(object sender, EventArgs e)
{
DataTable dt = ds.Tables[0];
sda.FillSchema(dt, SchemaType.Mapped);
DataRow dr = dt.Rows.Find(txtNo.Text);
dr["编号"] = txtNo.Text.Trim();
dr["年龄"] = txtAge.Text.Trim();
dr["姓名"] = txtName.Text.Trim();
dr["奖金"] = txtJJ.Text.Trim();
dr["性别"] = txtSex.Text.Trim();
SqlCommandBuilder cmdbuider = new SqlCommandBuilder(sda);
sda.Update(dt);

}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{

txtNo.Text = dataGridView1.SelectedCells[0].Value.ToString();
txtAge.Text = dataGridView1.SelectedCells[1].Value.ToString();
txtName.Text = dataGridView1.SelectedCells[2].Value.ToString();
txtJJ.Text = dataGridView1.SelectedCells[3].Value.ToString();
txtSex.Text = dataGridView1.SelectedCells[4].Value.ToString();
}
这道题我想做的是用更新功能时时更改数据!
在此提供图片

但是运行程序时发现错误(发现索引超出范围):错误图片附上:

请问程序运行失败的原因并且如何改正?
在此!谢谢给我网友了!!
附上出现错误的图片,以便网友们能看清楚!
展开
 我来答
zhouxiang_1216
2013-07-12 · TA获得超过2591个赞
知道大有可为答主
回答量:1286
采纳率:33%
帮助的人:1380万
展开全部
看了下截图,发现了几个问题,你检查一下:
1、你在获取点击的一行数据把它显示到TextBox里面时用的是DataGridView的CellContentClick事件,这个事件是在单元格的内容被单击时发生的,本来你就是点击了一个单元格,所以你要获取SelectedCells[1]的值时会出现索引超出范围的错误;
2、可以用DataGridView控件的Click事件来处理这个显示,在此事件中取SelectedRows的值,就是你当前点击的行的值,然后将每一列显示到对应的文件框里面就可以了,注意判断一下选中行是否为空:
if(this.dataGridView1.SelectedRows!=null&&this.dataGridView1.SelectedRows.Count>0)
{
txtNo.Text=this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
txtAge.Text=this.dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
//后面的以此类推,只是Cells的值不同而已
}
3、还有一个需要注意的地方是要把DataGridView控件的SelectionMode属性设置为“FullRowSelect”,即选择方式为一行;
希望对你有帮助,还有疑问请追问或是Hi
清水栞
2013-07-11 · TA获得超过1547个赞
知道小有建树答主
回答量:1538
采纳率:50%
帮助的人:986万
展开全部
你的目的是获取一行数据吧?你应该根据selectedCell去找row,再利用row[0] row[1]去取值
追问

5个字段:给你附图:

追答
SelectedCells表示你选中的所有单元格,你只选中一个的话Cells[1]当然是不存在的

按你的代码我猜是取值,应该是找到Cells[0]的row,再从 row里取值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
怒风十三幺
2013-07-11 · 超过22用户采纳过TA的回答
知道答主
回答量:47
采纳率:100%
帮助的人:18.8万
展开全部
dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();用这样的方法写
追问
这位网友,你编写的代码还有一个问题没有解决,就是不能进行更行功能(即不能对数据进行时时修改)但是这段程序要实现一个可以进行时时修改的功能!还请麻烦你给个意见,谢谢您了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式