0

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();
        }
4

1 に答える 1

0

マシュー、

ASPxGridView の編集イベントを使用することをお勧めします。次の例を見てください。

これは Code Central の例なので、ソリューション全体をダウンロードしてローカルで実行できます。

それでも問題が解決しない場合は、DevExpress サポート チームに連絡してください

于 2013-04-11T18:19:59.657 に答える