首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grdview_RowDeleting DataItem为空

grdview_RowDeleting DataItem为空
EN

Stack Overflow用户
提问于 2011-05-21 21:05:05
回答 3查看 905关注 0票数 0

我已经将我的数据网格绑定到一个列表。我遵循的是Repository模式,使用的是EF v4.1。我需要删除row_deleting事件上的实体。代码如下:

代码语言:javascript
复制
    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总是空的,我能做些什么来找回我的实体?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-21 21:33:03

您不需要获取任何东西就可以删除它。只需创建具有指定Id的实体,附加它,然后调用Remove。

代码语言:javascript
复制
Person user = new Person() { PersonId = Id };
db.Persons.Attach(person);
db.Persons.Remove(person);
db.SaveChanges();
票数 1
EN

Stack Overflow用户

发布于 2011-05-22 01:55:25

DataItem = null,因为在Page_Load中只将数据绑定到网格视图一次

代码语言:javascript
复制
public void Page_Load()
{
    if (!Page.IsPostBack)
    {
        grid.DataSource = GetDataSource();
        grid.DataBind();
    }
}

数据存储在视图状态中。单击“删除”后,您将回发到服务器。数据仍然存在于Gridview的视图状态中,并且不会反弹。

如果您有Id,则可以删除该对象。你可以用三种不同的方法来完成

从模型中删除,只需执行常规的

  1. http://blogs.msdn.com/b/alexj/archive/2009/03/27/tip-9-deleting-an-object-without-retrieving-it.aspx
  2. call -http://msdn.microsoft.com/en-us/library/ee358769.aspx (数据库上的第二个模型存储过程,将其导入模型并使用context.ExecuteFunction()

调用它

票数 2
EN

Stack Overflow用户

发布于 2011-05-21 21:27:14

我不确定我是否正确理解了你的问题,但我认为你应该试试这个

代码语言:javascript
复制
grdBooks.Rows[e.RowIndex].Cells[index].Text; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6081929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档