日期:2014-05-18  浏览次数:20714 次

ASP.NET GridView控件的删除行
我通过界面上的一些控件往GridView里面添加东西,但没有存进数据库,只是显示在界面上。所以,绑定的时候绑到了一个datatable上,GridView将只实现删除操作,但目前不知道怎么删除。
我看网上和书本上的一些删除方式,是基于绑定到数据库的模式的,他们先删除数据库里的,然后重新绑定。我也想照样用在datatable上,但不知道怎么删除datatable行方便些,同时疑虑是否有只涉及GridView的更简便的删除方式。

------解决方案--------------------
/// <summary>
/// 视图
/// </summary>
private DataTable GridViewSource
{
get
{
if (ViewState["List"] == null)
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("StockName", typeof(string)));
dt.Columns.Add(new DataColumn("GoodsNO", typeof(string)));
dt.Columns.Add(new DataColumn("_Name", typeof(string)));
dt.Columns.Add(new DataColumn("Spec", typeof(string)));
dt.Columns.Add(new DataColumn("ProductBrand", typeof(string)));
dt.Columns.Add(new DataColumn("Unit", typeof(string)));
dt.Columns.Add(new DataColumn("Qty", typeof(decimal)));
dt.Columns.Add(new DataColumn("Price", typeof(decimal)));
dt.Columns.Add(new DataColumn("Dis", typeof(decimal)));
dt.Columns.Add(new DataColumn("Total", typeof(decimal)));
dt.Columns.Add(new DataColumn("SN", typeof(string)));
dt.Columns.Add(new DataColumn("MainTenancePeriod", typeof(string)));
dt.Columns.Add(new DataColumn("PeriodEnd", typeof(string)));
dt.Columns.Add(new DataColumn("Remark", typeof(string)));
dt.Columns.Add(new DataColumn("StockID", typeof(int)));
dt.Columns.Add(new DataColumn("GoodsID", typeof(int)));
dt.Columns.Add(new DataColumn("UnitID", typeof(int)));
ViewState["List"] = dt;
}

return (DataTable)ViewState["List"];
}
set
{
ViewState["List"] = value;
}
}
/// <summary>
/// 绑定
/// </summary>
private void BindData()
{
GridView1.DataSource = GridViewSource;
GridView1.DataBind();
}
/// <summary>
/// 删除行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
GridViewSource.Rows[e.RowIndex].Delete();
BindData();
}