这是我的代码我想在单击该行的DELETE按钮时删除该行,同时数据库也应该更新。
protected void gvDetails_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("Delete"))
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = gvDetails.Rows[index];
string productID = gvDetails.DataKeys[index].Value.ToString();
string productName = row.Cells[1].Text;
this.RemoveProduct(productID, productName);
}
}
public void RemoveProduct(string productID, string productName)
{
DataRow dr;
SQLConnection objcon;
SqlDataAdapter objadp;
objcon=new SqlConnection("Connecting string");
try
{
objcon.Open();
DataSet ds = new DataSet();
objadp = new SqlDataAdapter("Select *from Bus_Table", objcon);
objadp.Fill(ds, "Bus_Table");
objadp.DeleteCommand = objcon.CreateCommand();
objadp.DeleteCommand.CommandText = "DELETE from Bus_Table where B_ID=" +int.Parse(productID);
DataTable objtable = new DataTable();
ds.Tables.Add(objtable);
foreach (DataRow dr in ds.Tables[0].Rows)
{
if (dr["B_ID"].Equals(productID))
{
DataRow objrow = dr;
objrow.Delete();
objadp.Update(ds, "Bus_Table");
ds.AcceptChanges();
Response.Write("Bus Deleted");
break;
}
}
}
catch (SqlException ex)
{
Response.Write(ex.Message);
}
finally
{
objcon.Close();
}
}
当我编译此代码时出现错误:
“数据源'SqlDataSource1'(我的数据源)不支持删除,除非指定了DeleteCommand”。
当我提出断点时,我注意到RemoveProduct(string productID, string productName)
未从gvDetails_RowCommand()
调用,但该条目也被删除。
答案 0 :(得分:1)
看看这些文章,它将详细解释如何从gridview中删除单行/多行。 http://technico.qnownow.com/2012/06/15/how-to-delete-multiple-rows-from-gridview-with-checkboxes/ http://technico.qnownow.com/2012/06/14/how-to-delete-a-row-from-gridview-with-client-side-confirmation/
答案 1 :(得分:0)
GridView可识别一些保留的命令名称:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx
当GridView
和CommandName
中提出的提交事件是“保留”事件之一时,在本例中为“删除”,{{1将尝试使用已分配的GridView
(使用DataSource
分配)来执行删除。
解决问题:
或
DataSourceId
更改为其他内容并在代码中检查