C# 在Gridview中选择一行并将其删除-Asp.net
我有一个gridview,它从MS Access数据库填充数据。我已经在gridview上启用了“选择”,并创建了一个删除按钮。我想在gridview上选择一行,并在按下delete按钮时从gridview和数据库中删除数据。下面是我尝试的代码,但它不起作用 我得到的错误是代码行中的“对象引用未设置为对象的实例”,代码行中的“myDataSet.Tables[“Users”]”。行[I].Delete();“ Web服务方法: //修改数据库C# 在Gridview中选择一行并将其删除-Asp.net,c#,asp.net,ms-access,gridview,delete-row,C#,Asp.net,Ms Access,Gridview,Delete Row,我有一个gridview,它从MS Access数据库填充数据。我已经在gridview上启用了“选择”,并创建了一个删除按钮。我想在gridview上选择一行,并在按下delete按钮时从gridview和数据库中删除数据。下面是我尝试的代码,但它不起作用 我得到的错误是代码行中的“对象引用未设置为对象的实例”,代码行中的“myDataSet.Tables[“Users”]”。行[I].Delete();“ Web服务方法: //修改数据库 [WebMethod] public string
[WebMethod]
public string DatabaseUserModify(DataSet myDataset)
{
string database = "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|/studentdb.accdb;Persist Security Info=True";
OleDbConnection myConn = new OleDbConnection(database);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from Users",
myConn);
OleDbCommandBuilder builder = new OleDbCommandBuilder(myDataAdapter);
builder.QuotePrefix = "[";
builder.QuoteSuffix = "]";
myConn.Open();
myDataAdapter.Update(myDataset, "Forum");
myConn.Close();
return "done";
}
网站:
protected void DeleteButton(object sender, EventArgs e)
{
Service myService = new Service();
myDataSet = myService.AdminGetUserTable();
int i = GridView1.SelectedIndex;
myDataSet.Tables["Users"].Rows[i].Delete();//This is where I am getting error
GridView1.DataSource = myDataSet;
GridView1.DataBind();
myService.DatabaseUserModify(myDataSet);
}
您的myDataSet可能在回发后丢失。必须将myDataSet保存在页面的ViewState中,才能在回发中保留其值。像这样:
public DataSet myDataSet
{
get
{
return ViewState["myDataSet"] != null ? (DataSet)ViewState["myDataSet"] : null;
}
set
{
ViewState["myDataSet"] = value;
}
}
但是,在ViewState中保存大型数据/对象是最糟糕的做法。回发后,您的myDataSet可能会丢失。必须将myDataSet保存在页面的ViewState中,才能在回发中保留其值。像这样:
public DataSet myDataSet
{
get
{
return ViewState["myDataSet"] != null ? (DataSet)ViewState["myDataSet"] : null;
}
set
{
ViewState["myDataSet"] = value;
}
}
但是,在ViewState中保存大型数据/对象是最糟糕的想法。应该是显而易见的。在该行上设置断点,并在调用时检查空值。在那之后你应该能把它整理好。请尝试让我们知道。我想您在回发时会将myDataSet设置为null。它是?在代码中逐步确认(断点)。由于ASP.NET页是无状态的,它将丢失myDataSet对象值。@MSI我已在“myDataSet.Tables[“Users”]”上设置断点并将其设置为null,在myDataSet上设置为null。表[“Users”]应该是明显的。在该行上设置断点,并在调用时检查空值。在那之后你应该能把它整理好。请尝试让我们知道。我想您在回发时会将myDataSet设置为null。它是?在代码中逐步确认(断点)。由于ASP.NET页是无状态的,它将丢失myDataSet对象值。@MSI我已在“myDataSet.Tables[“Users”]”上设置断点并将其设置为null,在“myDataSet.Tables[“Users”]”上@Ali.NET将myDataSet.Tables[“Users”]上设置为null