我有一个带有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;
这会返回一个项目集合,并且在删除行时不会更新,因为我的页面没有重新加载,因此无法更新集合。
如何解决?
答案 0 :(得分:1)
您需要在grd_RowDeleting
之后调用您的Gridview绑定函数grd.DataBind();
Gridview.DataBind
需要绑定数据源。 Here