注册 登录
编程论坛 ASP.NET技术论坛

GridView删除问题

stonefang 发布于 2007-05-27 22:40, 1555 次点击

我在执行下面的delete操作时出现图片上的错误,请各位指点指点.
protected void Gv_userlist_RowDeleting(object sender, GridViewDeleteEventArgs e)
{//删除
string st_sqlstr = "delete from Users where User_id=@userid";
SqlCommand st_comm = new SqlCommand(st_sqlstr, conn);
st_comm.Parameters.Add(new SqlParameter("@userid", SqlDbType.VarChar, 50));
//st_comm.Parameters["@userid"].Value = st_dtg_userinformation.DataKeys[(int)e.Item.ItemIndex];
//st_comm.Parameters["@userid"].Value = Gv_userlist.DataKeys[(int)e.RowIndex].ToString();//debug
st_comm.Parameters["@userid"].Value=Gv_userlist.DataKeys[(int)e.RowIndex].Values[0].ToString();
st_comm.Connection.Open();
try
{
st_comm.ExecuteNonQuery();
Lbl_note.Text = "删除成功";

}
catch (SqlException)
{
Lbl_note.Text = "删除失败";
Lbl_note.Style["color"] = "red";
}
st_comm.Connection.Close();
St_BindGridView();
}

只有本站会员才能查看附件,请 登录

15 回复
#2
rainic2007-05-28 09:16
DataKeys没设好...
#3
GrimFish2007-05-28 09:23
LS正解,DataKeys没有设置。
#4
stonefang2007-05-28 21:04
楼上的哥们,能帮我写一个代码吗?
你们说的是什么呀?那不是评论而已吗?
#5
GrimFish2007-05-28 21:42
DataKeys不知道吗?

右键单击你的GridView控件--属性。然后在控件属性栏里找到DataKey,设置你数据库表对应的主键字段,比如是ID.然后确定。
#6
tel19822007-05-29 08:40
这是我做的,你看一下:
private void bindTogvQz()
{
string strsql = ConfigurationManager.ConnectionStrings["qzsql"].ConnectionString;
SqlConnection con = new SqlConnection(strsql);
con.Open();
string selectstr = "select * from qztable";
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = new SqlCommand(selectstr,con);
DataSet ds = new DataSet();
sda.Fill(ds,"qzList");
string[] qz = new string[] {"qzID"};
this.gvQz.DataKeyNames = qz;
//this.gvQz.DataKeyNames = "qzID";
this.gvQz.DataSource = ds.Tables["qzList"].DefaultView;
this.gvQz.DataBind();
sda.Dispose();
con.Close();
con.Dispose();
}
==============
protected void gvQz_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//try
//{
string strID = this.gvQz.DataKeys[e.RowIndex].Value.ToString();
string strsql = ConfigurationManager.ConnectionStrings["qzsql"].ConnectionString;
SqlConnection con = new SqlConnection(strsql);
con.Open();
string deletestr = "delete from qztable where qzID=" + strID;
SqlCommand cmd = new SqlCommand(deletestr, con);
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
con.Dispose();
this.bindTogvQz();
//}
//catch
//{
// Response.Write("有点错误!");
//}
}
上面的是绑定,下面的是删除。
#7
bygg2007-05-29 09:20
将DataKeyNames 属性值设成表中的主键..
#8
stonefang2007-05-30 12:40

SqlConnection con = DB.CreateConn();
con.Open();

string sqlstr0 = "delete from Teacher_course where Teacher_course.Teacher_id='" + Gv_teach.DataKeys[e.RowIndex].Value.ToString() + "'";
string sqlstr1 = "delete from Teacher where Teacher_id='"+Gv_teach.DataKeys[e.RowIndex].Value.ToString()+"'";
SqlCommand sqlcom0 = new SqlCommand(sqlstr0, con);
sqlcom0.ExecuteNonQuery();

SqlCommand sqlcom1 = new SqlCommand(sqlstr1, con);
sqlcom1.ExecuteNonQuery();
try
{
sqlcom1.ExecuteNonQuery();
Lbl_note.Text = "删除成功";
Lbl_note.Style["color"]="green";

}
catch (SqlException)
{
Lbl_note.Text = "删除失败";
Lbl_note.Style["color"] = "red";
}
sqlcom0.Connection.Close();
sqlcom1.Connection.Close();
St_BindGridView();
这个程序在删除时没有执行try语句,请问怎么改?

#9
rainic2007-05-30 14:29
SqlCommand sqlcom1 = new SqlCommand(sqlstr1, con);
sqlcom1.ExecuteNonQuery(); 因为执行到这就出错了... 把这句去掉
try
{
sqlcom1.ExecuteNonQuery();
Lbl_note.Text = "删除成功";
#10
stonefang2007-05-30 22:27

protected void Gv_teach_RowDeleting(object sender, GridViewDeleteEventArgs e)
{//删除数据
SqlConnection con = DB.CreateConn();
con.Open();
//先删除子表
string sqlstr0 = "delete from Teacher_course where Teacher_course.Teacher_id='" + Gv_teach.DataKeys[e.RowIndex].Value.ToString() + "'";
//删除主表
string sqlstr1 = "delete from Teacher where Teacher_id='" + Gv_teach.DataKeys[e.RowIndex].Value.ToString() + "'";
SqlCommand sqlcom = new SqlCommand(sqlstr0, con);
sqlcom.ExecuteNonQuery();
sqlcom = new SqlCommand(sqlstr1,con);
try
{
sqlcom.ExecuteNonQuery();
Lbl_note.Text = "删除成功";
Lbl_note.Style["color"] = "green";

}
catch (SqlException)
{
Lbl_note.Text = "删除失败";
Lbl_note.Style["color"] = "red";
}
sqlcom.Connection.Close();
St_BindGridView();
}
删除数据还是不能显示"删除成功"和删除失败",怎么做呢?帮帮忙啊!我不行了.

#11
rainic2007-05-30 22:41

SqlConnection con = DB.CreateConn();
con.Open();
try
{

string sqlstr0 = "delete from Teacher_course where Teacher_course.Teacher_id='" + Gv_teach.DataKeys[e.RowIndex].Value.ToString() + "'";
string sqlstr1 = "delete from Teacher where Teacher_id='"+Gv_teach.DataKeys[e.RowIndex].Value.ToString()+"'";
SqlCommand sqlcom0 = new SqlCommand(sqlstr0, con);
sqlcom0.ExecuteNonQuery();

SqlCommand sqlcom1 = new SqlCommand(sqlstr1, con);
sqlcom1.ExecuteNonQuery();
sqlcom1.ExecuteNonQuery();
Lbl_note.Text = "删除成功";
Lbl_note.Style["color"]="green";

}
catch (SqlException)
{
Lbl_note.Text = "删除失败";
Lbl_note.Style["color"] = "red";
}
con.Close();
St_BindGridView();

#12
rainic2007-05-30 22:45
string sqlstr0 = "delete from Teacher_course where Teacher_course.Teacher_id='" + Gv_teach.DataKeys[e.RowIndex].Value.ToString() + "'";
string sqlstr1 = "delete from Teacher where Teacher_id='"+Gv_teach.DataKeys[e.RowIndex].Value.ToString()+"'";

你这两个Sql语句正确吗?
你自己检查一下啊
#13
stonefang2007-05-30 23:05
我改了还是不行啊
#14
stonefang2007-05-30 23:18
数据是能删除的,就不懂为什么不能在Lable控件中显示删除后的信息.
#15
rainic2007-05-30 23:48
Lbl_note.Text = "";
你有这样的代码吗?
把它放在
if (!IsPostBack){
}
#16
tel19822007-05-31 14:20
你断点一下看到第错在了哪里,自己仔细检查一下。
1