Asp.net 具有删除行功能的Gridview用户控件不';删除后无法更新我的gridview

Asp.net 具有删除行功能的Gridview用户控件不';删除后无法更新我的gridview,asp.net,gridview,crud,Asp.net,Gridview,Crud,我有一个具有CRUD功能的gridview用户控件。我有一个OnRowDelete事件和一个RowCommand事件,用于检查是否单击了我的“删除”按钮 在行删除: protected void grd_RowDeleting(object sender, GridViewDeleteEventArgs e) { grd.EditIndex = -1; pnlSelected.Visible = false; btnSave.Visible

我有一个具有CRUD功能的gridview用户控件。我有一个OnRowDelete事件和一个RowCommand事件,用于检查是否单击了我的“删除”按钮

在行删除:

protected void grd_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        grd.EditIndex = -1;
        pnlSelected.Visible = false;
        btnSave.Visible = false;
        btnInsert.Visible = false;
        grd.DataBind();
    }
行命令:

protected void grd_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Delete")
        {
            LinkButton lnkBtn = (LinkButton)e.CommandSource;    // the button
            GridViewRow myRow = (GridViewRow)lnkBtn.Parent.Parent;  // the row
            GridView myGrid = (GridView)sender; // the gridview

            string item = (string)myGrid.DataKeys[myRow.RowIndex].Value.ToString();
            DataController.DeleteByPrimKey(item);
        }
    }
在我的webform中,我填充了usercontrol的数据源。现在的问题是我想删除一条记录

ucShowHouseList.DataSource = myDataSource;
如果在gridview中删除记录,gridview不会显示更改。如果我刷新页面,记录将被删除

有什么问题吗

编辑:

我认为我的问题是usercontrol中的数据源在删除后不会得到更新。因此,在Web表单的页面加载中,我填充了usercontrol的数据源:

ucShowHouseList.DataSource=myDataSource

在我的usercontrol中删除行时,我现在执行以下操作:

grd.DataSource = DataSource;
grd.DataBind();
DataSource是我的usercontrol中的一个IENumerable属性,我在Web表单中加载页面时填充它

public IEnumerable DataSource;
这将返回项目集合,并且在我删除行时不会更新,因为我的页面未重新加载,因此集合无法更新


如何解决这个问题?

您需要在
grd_rowdeleding
not
grd.DataBind()之后调用Gridview绑定函数

Gridview.DataBind
需要绑定数据源

旁注:使用
lnkBtn.NamingContainer
来获取
GridViewRow
而不是
lnkBtn.Parent.Parent
。根据您的问题,在您更改
数据源后,是否
数据绑定
网格视图
?好的,我通过重新填充数据源然后重新绑定来解决问题。我的问题现在解决了