2013-11-22 19 views
0

我有一個帶有CRUD功能的gridview用戶控件。我有一個OnRowDeleting事件和一個RowCommand事件來檢查我的'刪除'按鈕是否被點擊。具有刪除行功能的GridView用戶控件在刪除後不會更新我的GridView

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); 
     } 
    } 

在我的網絡表單,填補了我的用戶的數據源。現在的問題是我想刪除一條記錄。

ucShowHouseList.DataSource = myDataSource; 

如果我在我的gridview中刪除一條記錄,gridview不顯示更改。如果我刷新頁面,記錄被刪除。

可能是什麼問題?

編輯:

我想我的問題是,在用戶控件的數據源沒有得到後刪除更新。所以在我的網頁表單的Page_Load中我填了我的用戶的數據源:

ucShowHouseList.DataSource = myDataSource;

在行刪除在我的用戶我現在做的事:

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

數據源是在我的用戶一個IEnumerable屬性我在我的webform中填寫page_load。

public IEnumerable DataSource; 

這將返回項目的集合,當我刪除行,因爲我的網頁是不是重新加載,因此收集不能被更新不更新。

如何解決?

+1

注意:不是'lnkBtn.Parent.Parent'使用'lnkBtn.NamingContainer'來獲取'GridViewRow'。根據你的問題,在你更改'DataSource'之後,你有'DataBind'' GridView'嗎? –

+0

沒關係我通過重新填充我的數據源,然後重新綁定它來解決我的問題。我的問題現在解決了 –

回答

1

你需要調用你的GridView綁定功能grd_RowDeleting沒有grd.DataBind(); Gridview.DataBind後需要一個數據源綁定。 Here