2013-03-10 121 views
0

我的Gridview拒絕退出編輯模式。當我點擊更新鏈接時,儘可能地更新數據庫,但是Gridview行仍處於編輯模式。當我按下取消按鈕時,Gridview反映了新的信息。爲什麼即使在將EditIndex設置爲-1之後該行仍處於編輯模式?Gridview保持編輯模式

我確定這是一種真正的補救措施,但是我不能找到任何幫助獲得一個gridview出編輯模式,不只是告訴我設置編輯索引。

protected void Gridview_RowUpdating(object sender, GridViewUpdateEventArgs e) { 
    // Update code is here and works fine 
    try { 
     // this works and updates the database w/ no problems 
     ObjectDataSource.Update(); 
    } 
    catch (Exception ex) { 
    } 

    Gridview.EditIndex = -1; 
    Gridview.DataBind();    
} 

編輯:我拿出try/catch語句並沒有什麼似乎失敗了,但我還是要顯式調用ObjectDataSource.Update()所以,這裏是我的GridView的設置:

<asp:Gridview ID="Gridview" runat="server" DataSourceID="ObjectDataSource" DataKeyNames="ID" OnDataBound="Gridiew_DataBound" 
       AutoGenerateColumns="false" OnRowCommand="Gridview_RowCommand" OnRowUpdating="Gridview_RowUpdating"> 

而ObjectDataSource控件

<asp:ObjectDataSource ID="ObjectDataSource" runat="server" TypeName="DAL.Class" SelectMethod="SelectMethod" UpdateMethod="UpdateMethod"> 
    <UpdateParameters> 
     <asp:Parameter Name="param1" Type="Int32" /> 
     <asp:Parameter Name="param2" Type="String" /> 
     <asp:Parameter Name="param3" Type="String" /> 
     <asp:Parameter Name="param4" Type="String" /> 
     <asp:Parameter Name="param5" Type="String" /> 
     <asp:Parameter Name="param6" Type="Int32" /> 
     <asp:Parameter Name="param7" Type="String" /> 
     <asp:Parameter Name="param8" Type="Int32" /> 
    </UpdateParameters> 
</asp:ObjectDataSource> 

那麼,什麼設置不正確,它不會自動更新?

編輯2: 因此,我現在將參數值設置在ObjectDataSource_Updating事件中(之前沒有調用這個參數值,這就是爲什麼我顯式調用了ods_update())。現在_Updating事件正在被擊中,但它永遠不會進入我的DAL方法。再一次,沒有錯誤拋出,它只是沒有做任何事情....

回答

0

也許不好的事情發生像編輯失敗。 既然你是隱藏的錯誤:

catch (Exception ex) { 
    } 

...你不能看到發生了什麼。

如果GridView/DataSource設置正確,則不需要顯式調用Update或DataBind。

+0

好的,我已經用aspx中設置的gridview/ods更新了原始文章。那麼,我做錯了什麼,阻止了它在row_updating中的顯式調用中更新呢? – user1744966 2013-03-10 18:24:01

+0

嘗試刪除更新事件中的代碼。如果您想重置索引,請在更新的事件中執行。 – 2013-03-10 18:39:19

+0

沒有區別。我真的不想重置索引,我只是這樣做,因爲它並不是獨立於編輯模式。我不明白爲什麼我不得不明確地調用update()以開始... – user1744966 2013-03-10 18:58:27

0

你可以通過更新虛擬表進行拍攝嗎? (在Gridview_RowUpdating事件中)

ObjectDataSource.UpdateCommand = @"UPDATE somedummytable set parameter"; 
ObjectDataSource.Update();  
Gridview.EditIndex = -1;  
    ObjectDataSource.DataBind();  
Gridview.DataBind();  

經過這一步後,我確信它會脫離編輯模式。