2013-03-10 112 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();  

经过这一步后,我确信它会脱离编辑模式。