具有删除行功能的Gridview用户控件在删除后不会更新我的gridview

时间:2013-11-22 16:09:51

标签: asp.net gridview crud

我有一个带有CRUD功能的gridview用户控件。我有一个OnRowDeleting事件和一个RowCommand事件,用于检查我的'删除'单击按钮。

OnRowDeleting:

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

RowCommand:

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不会显示更改。如果我刷新页面,则删除记录。

可能是什么问题?

修改

我认为我的问题是用户控件中的数据源在删除后没有更新。所以在我的webform的Page_Load中,我填写了usercontrol的数据源:

ucShowHouseList.DataSource = myDataSource;

在我的usercontrol中删除行时,我现在执行:

grd.DataSource = DataSource;
grd.DataBind();

DataSource是我的usercontrol中的IENumerable属性,我填写了webform中的page_load。

public IEnumerable DataSource;

这会返回一个项目集合,并且在删除行时不会更新,因为我的页面没有重新加载,因此无法更新集合。

如何解决?

1 个答案:

答案 0 :(得分:1)

您需要在grd_RowDeleting之后调用您的Gridview绑定函数grd.DataBind(); Gridview.DataBind需要绑定数据源。 Here