在Entity Framework生成的GridView上插入/更新/删除

时间:2015-07-15 06:03:06

标签: c# asp.net entity-framework gridview

我在这个ASP.NET Web窗体应用程序中使用EF 6.1.3和SQL Server 2014。我在我的.aspx页面设计视图上拖放了一个gridview,并使用智能标记选择我的数据源并自动填充网格。我在gridview上启用了编辑和删除操作,它没有问题,但我想让它使用我写的函数。

这是我尝试删除操作

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Delete")
            {
                    int rowIndex = Convert.ToInt32(e.CommandArgument);
                    Result<Models.UserList> result;
                    using (ModelOperations.UserList.IUserListOperations dao = new ModelOperations.UserList.UserListOperations())
                    {
                        result = dao.removeUser(new Models.UserList()
                        {
                            ID = Convert.ToInt32((GridView1.Rows[rowIndex].Cells[1].Text))
                        });
                    }
            }
        }

它实际上有效,但页面出错。我的UserListOperations中的方法有一个try-catch块,但没有捕获异常,因为代码只是工作。

这是由EF

生成的GridView代码
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="UserID" DataSourceID="myEntities">
            <Columns>
                <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
                <asp:BoundField DataField="UserID" HeaderText="UserID" ReadOnly="True" SortExpression="UserID" />
                <asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName" />
                <asp:BoundField DataField="UserPW" HeaderText="UserPW" SortExpression="UserPW" />
                <asp:BoundField DataField="UserType" HeaderText="UserType" SortExpression="UserType" />
            </Columns>
        </asp:GridView>

这就是错误

  

存储更新,插入或删除语句会影响意外   行数(0)。自那以后,实体可能已被修改或删除   实体已加载。刷新ObjectStateManager条目。

如果我从文本框中获取值并以这种方式发送值,则没有错误,因此我猜测它是关于自动生成的网格的。

0 个答案:

没有答案