我已经将我的数据网格绑定到一个列表。我遵循的是Repository模式,使用的是EF v4.1。我需要删除row_deleting事件上的实体。代码如下:
protected void grdBooks_RowDeleting(object sender, System.Web.UI.WebControls.GridViewDeleteEventArgs e)
{
int bookId = (int)e.Keys[0];
//grdBooks.Rows[e.RowIndex] //this item's dataItem is always null.
}因为我正在使用实体,所以我需要实际的实体将其传递给我的GenericRepository,它将删除该实体。我确实得到了bookId,但我不想做一些愚蠢的事情,比如使用此bookId从数据库中获取实体,然后将其传递给我的delete方法。为什么DataItem总是空的,我能做些什么来找回我的实体?
发布于 2011-05-21 21:33:03
您不需要获取任何东西就可以删除它。只需创建具有指定Id的实体,附加它,然后调用Remove。
Person user = new Person() { PersonId = Id };
db.Persons.Attach(person);
db.Persons.Remove(person);
db.SaveChanges();发布于 2011-05-22 01:55:25
DataItem = null,因为在Page_Load中只将数据绑定到网格视图一次
public void Page_Load()
{
if (!Page.IsPostBack)
{
grid.DataSource = GetDataSource();
grid.DataBind();
}
}数据存储在视图状态中。单击“删除”后,您将回发到服务器。数据仍然存在于Gridview的视图状态中,并且不会反弹。
如果您有Id,则可以删除该对象。你可以用三种不同的方法来完成
从模型中删除,只需执行常规的
调用它
发布于 2011-05-21 21:27:14
我不确定我是否正确理解了你的问题,但我认为你应该试试这个
grdBooks.Rows[e.RowIndex].Cells[index].Text; https://stackoverflow.com/questions/6081929
复制相似问题