建立一个数据库再显示于gridview上,如下图所示:
要实现的功能暂时是数据库的显示、修改、删除、增加,显示要求工艺号文本框内只有数字,就像图中那样,但是在该条件下再进行修改功能(增加、删除功能正常)就会出现“未处理nullreferenceexception,未将对象引用设置到对象的实例”的提示,求教一下该情况是什么原因,有什么解决办法?
显示和修改代码如下:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
//将各列的值对应显示于各文本框//
string str = dataGridView1.SelectedCells[0].Value.ToString();
str = str.Replace("工艺", "");//显示项去除“工艺”二字
txtNo.Text=str;
txtZJ.Text = dataGridView1.SelectedCells[2].Value.ToString();
txtHD.Text = dataGridView1.SelectedCells[3].Value.ToString();
txtRA.Text = dataGridView1.SelectedCells[7].Value.ToString();
txtBC.Text = dataGridView1.SelectedCells[4].Value.ToString();
cobDS.Text = dataGridView1.SelectedCells[5].Value.ToString();
txtXL.Text = dataGridView1.SelectedCells[6].Value.ToString();
txtCL.Text = dataGridView1.SelectedCells[1].Value.ToString();
string str2 = dataGridView1.SelectedCells[8].Value.ToString();
switch (str2)
{
case "外形": radioButton1.Checked = true; break;
case "内孔": radioButton2.Checked = true; break;
}
}
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = ds.Tables["tb"];
sda.FillSchema(dt, SchemaType.Mapped);
DataRow dr = dt.Rows.Find(txtNo.Text);//编号
//以下句子将各文本框中的内容放于对应列下
dr["工艺号"] = "工艺" + this.txtNo.Text.Trim();
dr["钼丝直径(mm)"] = this.txtZJ.Text.Trim();
dr["工件厚度(mm)"] = this.txtHD.Text.Trim();
dr["表面光洁度"] = this.txtRA.Text.Trim();
dr["钼丝补偿(mm)"] = this.txtBC.Text.Trim();
dr["切割次数"] = this.cobDS.Text.Trim();
dr["切割效率(mm2/分钟)"] = this.txtXL.Text.Trim();
dr["材料说明"] = this.txtCL.Text.Trim();
if (radioButton1.Checked)
{
dr["形状"] = "外形";
}
else if (radioButton2.Checked)
{
dr["形状"] = "内孔";
}
SqlCommandBuilder cmdbuider = new SqlCommandBuilder(sda);
sda.Update(dt);
conn.Close();
}