0

この行に DetailRow を持つ ASPxGridView があり、さらに 3 つの ASPxGridView があります。各詳細 ASPxGridView には、新しい行を作成するためのリンクを含む EmptyDataRow テンプレートが含まれています。

<a href="javascript:gridViewDetails1.AddNewRow();">AddNewRecord</a>

マスター ASPxGridView 行が 1 または 2 の場合、詳細グリッドに新しい行が追加されますが、マスター ASPxGridView 行が約 10 行以上の場合、詳細グリッド リンクをクリックして新しい行を追加すると、ロード パネルが無制限に表示され、FireBug-> Net は、POST のステータスがタイムアウトであり、時間が約 1 秒であることを示しています。

どうすれば修理できますか?

AGoodDisplayNameへ:

詳細行のグリッドビューは何かにバインドされていますか?

はい、もちろん、マスター gridView の詳細行内には 3 つの別の gridView があり、それぞれに個別の ObjectDataSource があります。

一度に複数の行を拡張していますか?

いいえ、一度に 1 行しかありません。

AllowOnlyOneMasterRowExpanded="true"

マークアップの一部を見ることができますか?

はい:

<asp:ObjectDataSource ID="dsMaster" runat="server" TypeName="..." SelectMethod="...">
</asp:ObjectDataSource>
<dxwgv:ASPxGridView ID="gridViewMaster" ClientInstanceName="gridViewMaster" runat="server" DataSourceID="dsMaster">
    <Templates>
        <DetailRow>
            <%--first of details gridView--%>
            <asp:ObjectDataSource ID="dsDetail1" runat="server" TypeName="..." SelectMethod="...">
            </asp:ObjectDataSource>
            <dxwgv:ASPxGridView ID="gridViewDetail1" ClientInstanceName="gridViewDetail1" runat="server" DataSourceID="dsDetail1">
                <Templates>
                    <EmptyDataRow>
                        <a href="javascript:gridViewDetail1.AddNewRow();">AddNewRecord</a>
                    </EmptyDataRow>
                </Templates>
            </dxwgv:ASPxGridView>
            <%--next others detail gridViews--%>
        </DetailRow>
    </Templates>
</dxwgv:ASPxGridView>
4

1 に答える 1

0

私は以前にこのような問題をいくつか抱えていましたが、問題を解決することができました。私の問題とあなたの問題の違いは、私が DevExpress XpoDataSource (その DevExpress バージョンの ObjectDataSource) を使用していたことです。

  1. 設計時に、0 レコードを戻すようにデータソースを設定しました。このように、FilterExpression を「ID = 0」などに設定することで、ページの読み込み時にデータが取得されることはありません (これは 3 つのグリッドと 3 つのデータ ソースではコストがかかる可能性があります)。これは、パフォーマンスに関して最も大きな違いを生むように思われました。

  2. 明らかに 0 を超えるレコードを戻す必要があるため、詳細グリッドの「BeforePerformDataSelect」イベントでフィルタリングを設定する必要があります。

    protected void ASPxGridView1_BeforePerformDataSelect(object sender, EventArgs e)
    {
       dsDetail1.FilterExpression = "MasterRecordID = " + (sender as ASPxGridView).GetMasterRowKeyValue().ToString();
    }
    

これで問題が解決するかどうかはわかりませんが、これが私がやったことであり、役に立ちました。

于 2010-02-18T15:18:52.233 に答える