2011-02-10 14 views
0

LinqDataSourceにバインドされたFormViewを持っています。グリッドビュー。 LDSは、GridViewコントロール(すなわちControlParameter)を指すように設定される場合、パラメータた:ASP.NET - LinqDataSourceにバインドされたFormViewはデータを表示しますが、データベースは更新しません(イベントの更新は発生しません)。

<asp:LinqDataSource ID="ldsProduct" runat="server" OnContextCreating="LinqDataSource_ContextCreating" 
EnableDelete="True" EnableInsert="True" EnableUpdate="True" TableName="Products" 
Where="[email protected]" OnSelecting="ldsProduct_Selecting" OnUpdating="ldsProduct_Updating" 
OnInserted="ldsProduct_Inserted" OnUpdated="ldsProduct_Updated" OnDeleted="ldsProduct_Deleted"> 
<WhereParameters> 
    <asp:ControlParameter Name="ProductID" ControlID="gvProducts" /> 
</WhereParameters> 

FormViewコントロール私はGridViewので選択方製品レコードを示しています。しかし、私が更新をクリックするとデータベースに対して更新が実行されません

これは私が見てきたものである:FormViewコントロールのItemCommandハンドラで

  • を、更新コマンドが
  • をたまたま私がe.NewObjectを見れば次に、LDSの更新イベントが発生しかし、Productオブジェクトがあります(正しい値に設定された)ProductIDのみが設定されています。他のすべてのプロパティは設定されていません。間違いなく、これは更新がデータベースにヒットしない理由です。

すなわち、私は明示的に編集モードにFormViewコントロールを設定し、FormViewコントロールのItemCommandハンドラでそれをデータバインディング試してみましたが、それは違いはありません:

fvProduct.ChangeMode(FormViewMode.Edit) 
fvProduct.DataBind() 

私はどのようにFormViewコントロールを得ることはありませんProductオブジェクトにデータが表示されているときにはっきりとバインドされていますが、Updateコマンドが実行されると失われます。

ところで、DataContextのカスタムコンストラクタを使用していますが、OnContextCreatedを通常のContextTypeNameに置き換えても、問題はまだ発生します。

答えて

0

FormViewの場合、Viewstateをデフォルトでオフにする必要があります。 EnableViewstate = "true"に設定すると、コントロールはポストバック時に「正しく」動作します。

関連する問題