2010-09-21 62 views
1

我有一個ASP.NET GridView顯示鄰居列表。ASP.NET GridView - 如何執行自定義更新語句?

我希望用戶(管理員)能夠編輯鄰居名稱。

現在,數據庫是相當複雜的,因此,我不能簡單地爲GridView提供一個UpdateCommand/SqlDataSource。

我手動綁定數據(在第一次加載時和在PageIndexChanging事件中)。

綁定/列表分頁數據工作正常。

但是,我無法嘗試更新數據。

用戶單擊「編輯」按鈕,顯示鄰居名稱的文本框,我更改文本,單擊「更新」,但RowUpdating事件未觸發。

我基本上想要抓住已編輯的行,並使用LINQ執行自定義更新。

這不可能與一個GridView?如果不是,我的替代品是什麼?一個帶LinkBut​​tons的中繼器和一個隱藏文本框,可以交換標籤嗎?

這是我的GridView的標記:

<asp:GridView ID="NeighborhoodsGrid" 
       AllowPaging="true" 
       PageSize="10" 
       AutoGenerateColumns="false" 
       EnableViewState="false" 
       OnPageIndexChanging="NeighborhoodsGridPageIndexChanging" 
       OnRowDataBound="NeighborhoodsGridRowDataBound" 
       OnRowEditing="NeighborhoodsGridRowEditing" 
       OnRowCancelingEdit="NeighborhoodsGridRowCancellingEdit" 
       OnRowUpdating="NeighborhoodsGridRowUpdating" 
       AutoGenerateEditButton="true" 
       runat="server"> 

和代碼隱藏:

protected void NeighborhoodsGridRowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow updatedRow = NeighborhoodsGrid.Rows[e.RowIndex]; // not firing. =(
} 

我也有包裝在一個UpdatePanel GridView的,如果有什麼差別(不要以爲這應該)。

任何想法或替代建議?

回答

3

沒關係的傢伙,我的壞。

我有EnableViewState =「false」。

我不知道爲什麼這會影響事件的發射,也不知道其他事件如何工作。

無論如何,我將其設置爲true,並且事件被觸發。

我總是嘗試設置ViewState爲false,然後將其打開,因爲我需要它。

這次支付了價格。 =)

無論如何,問題解決了。

+0

BOOM !! Viewstate爆炸。好東西有MVC! – 2010-09-21 04:06:01

+0

=)地獄是的,這是一個ASP.NET Web窗體應用程序的管理頁面,所以我「屈服於」拖放地獄。 =)我們正在重寫網站tho - MVC FTW。 – RPM1984 2010-09-21 04:12:59