WebForms ページの GridView に問題があります。多分あなたが私を助けてくれることを願っています。
Entity Framework を介して LinqDataSource によってバインドされたグリッドを SQL Server ビューに取得しました。ビューは基本的に、テーブルの 1 つからデータを集計します。私のページでは、そのテーブルにいくつかの変更を加えることができます。これは、別のコンテキストで Entity Framework で更新します。問題は、ポストバックの後、常に前の編集からの変更が表示されることです。
例: 1. 値が "Matthew" のエンティティがあります。2. 「John」に編集 -> ポストバック => 「Matthew」が表示されます。3. 「Mick」に編集 -> ポストバック => 「John」が表示されます。
グリッドのビュー ステートと行のキャッシュを無効にしようとしましたが、成功しませんでした。
アドバイスをいただければ幸いです。
ありがとうございました!
<p>
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="WebApplication2.Database1Entities" EntityTypeName="" TableName="Clients">
</asp:LinqDataSource>
<dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" DataSourceID="LinqDataSource1" KeyFieldName="id" EnableRowsCache="False">
<Columns>
<dx:GridViewDataTextColumn FieldName="id" VisibleIndex="0">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="name" VisibleIndex="1">
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
</p>
<p>
<dx:ASPxTextBox ID="ASPxTextBox1" runat="server" Width="170px">
</dx:ASPxTextBox>
<dx:ASPxButton ID="ASPxButton1" runat="server" Text="ASPxButton" OnClick="ASPxButton1_Click">
</dx:ASPxButton>
</p>
protected void ASPxButton1_Click(object sender, EventArgs e)
{
var ent = new Database1Entities();
var itemToUpdate = ent.Clients.FirstOrDefault(p => p.id == 1);
itemToUpdate.name = ASPxTextBox1.Text;
ent.SaveChanges();
}