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に置き換えても、問題はまだ発生します。