1

要件: 値に基づいてグリッドからボタンをクリックして行を削除する関数を実装しました。私の要件は、ステータスが「Verwerkt」、「Ter Fiattering」、「Al verwerkt」の行がグリッドから削除され、コードビハインドでレコードをデータベースから削除するメソッドを追加することです。

問題: 行はグリッドから削除されますが、1 ~ 2 秒後に戻ってきます。本当に奇妙です。warningondirrty に関する警告を受け取りましたが、ストアでオフにしてそのメッセージをキャンセルしました (WarningOnDirty = false)。ヘルプ :)

グリッドパネル:

<ext:Panel runat="server" ID="panel" Height="0">
    <TopBar>
        <ext:Toolbar runat="server">
            <Items>
                <ext:Button ID="btnHaalBatch" runat="server" Text="GBA synchroniseren" OnDirectClick="btnHaalBatch_Clicked" Icon="Add"> </ext:Button>
                <ext:Button ID="btnVerwerkNAW" runat="server" Text="Verwerk" OnDirectClick="btnVerwerkNAW_Clicked" Icon="Tick">
                    <%--<DirectEvents>
                        <Click OnEvent="Wait"/>
                    </DirectEvents>--%>
                </ext:Button>
                <ext:ProgressBar ID="Progress1" runat="server" Width="300" Text="Initializing..." Hidden="true" />
                <ext:Button ID="btnClearSelection" runat="server" Text="Mutatie(s) legen" Icon="Delete" OnDirectClick="btnClearSelection_Clicked">
                    <Listeners>
                        <Click Handler="MutatieLegen(#{grid});" />
                    </Listeners>
                </ext:Button>
            </Items>
        </ext:Toolbar>
    </TopBar>
</ext:Panel>
<ext:ResourceManager ID="ResourceManager1" runat="server" />
<!-- Simple Array Grid -->
<ext:GridPanel ID="grid" runat="server" Title="Wijzigingen" AutoWidth="true" AutoHeight="true" Padding="4" StripeRows="true" Draggable="false" Selectable="true" Icon="Application">
    <Store>
        <ext:Store ID="Store1" runat="server" WarningOnDirty="false">
            <Reader>
                <ext:ArrayReader>
                    <Fields>
                        <ext:RecordField Name="persoonID" Mapping="PersoonsId" />
                        <ext:RecordField Name="anummer" Mapping="Anummer" />
                        <ext:RecordField Name="bSNpersoon" Mapping="BSNpersoon" />
                        <ext:RecordField Name="type" Mapping="TypeWijziging" />
                        <ext:RecordField Name="datum" Mapping="DatumBinnenhalen" />
                        <ext:RecordField Name="omschrijving" Mapping="Omschrijving" />
                        <ext:RecordField Name="foutmelding" Mapping="Foutmelding" />
                    </Fields>
                </ext:ArrayReader>
            </Reader>
        </ext:Store>
    </Store>
    <ColumnModel ID="ColumnModel1" runat="server">
        <Columns>
            <ext:RowNumbererColumn />
            <ext:Column DataIndex="persoonID" Header="Relatie nr." Width="100">
            </ext:Column>
            <ext:Column DataIndex="anummer" Header="A-nummer" Width="150">
            </ext:Column>
            <ext:Column DataIndex="bSNpersoon" Header="BSN" Width="150">
            </ext:Column>
            <ext:Column DataIndex="type" Header="Type wijziging" Width="150">
            </ext:Column>
            <ext:Column DataIndex="datum" Header="Datum synchroniseren" Width="200">
            </ext:Column>
            <ext:Column ColumnID="columnStatus" DataIndex="omschrijving" Header="Status" Width="130">
                <Renderer Handler="return imgRenderer(value);" />
            </ext:Column>
            <ext:Column DataIndex="foutmelding" Header="Reden" Width="350">
            </ext:Column>
        </Columns>
    </ColumnModel>
    <SelectionModel>
        <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" SingleSelect="false" />
    </SelectionModel>
</ext:GridPanel>

関数 JavaScript クライアントは行を削除します:

function MutatieLegen(grid) {
        var i = 0;
        //var store = Ext.getCmp("grid").getStore();
        if (grid.store.getCount() > 0) {
            for (i = grid.store.getCount() - 1; i >= 0; i--) {
                var status = grid.store.getAt(i).data["omschrijving"];
                if (status == "Verwerkt" || status == "Ter Fiattering" || status == "Al verwerkt") {
                    grid.store.removeAt(i);
                }
            }
        }

コードビハインド:

protected void btnClearSelection_Clicked(Object sender, DirectEventArgs e)
    {

       // Code behind logic. call sql to delete rows where status == Verwerkt or Ter   Fiattering or Al verwerkt

    }
4

1 に答える 1

1

各リクエストでデータを再バインドすると思いますが、「if(!X.IsAjaxRequest)」でデータバインディングをラップしていることを確認してください

于 2012-03-05T18:15:49.050 に答える