私の Gridview は、編集モードを終了することを拒否します。更新リンクを押すと、データベースが更新されている限り、すべてが正常に機能しますが、Gridview 行は編集モードのままです。[キャンセル] ボタンを押すと、Gridview に新しい情報が反映されます。EditIndex を -1 に設定した後でも行が編集モードのままになるのはなぜですか?
それは本当に改善策だと確信していますが、編集インデックスを設定するように指示するだけでなく、編集モードからグリッドビューを取得する方法が見つかりません。
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 メソッドには入りません。繰り返しますが、エラーはスローされず、何もしません....