1

同じ .ASPX ページに ListView と DetailsView コンポーネントがあります。DetailsView は、ListView に表示されている行の集計合計を表示します。最新の状態に保つために、ListView の ItemUpdated、ItemInserted、および ItemDeleted イベント ハンドラーで DetailsView.DataBind() を呼び出します。

編集中または挿入中にフィールドで Enter キーを押すと、現在の行への変更が取り消され、最初に表示されている行が編集モードになります。Enter キーを押す代わりに [更新] ボタンをクリックすると、期待どおりに動作します。

DataBind 呼び出しを追加する前にこの動作が発生したため、当初、この動作は現状維持であると想定していましたが、更新ボタンが行の最初にあり、キャンセル ボタンが最後にある場合、Enter キーを押すと、必要 -- 変更を現在の行に保存し、編集モードを終了しました。しかし、それは私の DataBind 呼び出しが適切でない場合にのみ当てはまります。

DetailsView の更新ボタンを追加できると思いますが、どちらが醜いのか、それとも ENTER を押さないように覚えておく必要があるのか​​、実際には判断できません。

このことを動作させる方法についてのアイデアはありますか?

ティア、MM

4

1 に答える 1

1

問題は、Enter キーを押すと、フォームに表示される最初のボタンが「クリック」されることでした。そこで、他のコントロールの上に透明な画像のボタンを作成し、次のクリック ハンドラーを作成しました。

protected void TransparentUpdateButton_Click(object sender, ImageClickEventArgs e)
{
    if (ListView1.EditItem != null)
    {
        ListView1.UpdateItem(ListView1.EditIndex, false);
        return;  // must return, InsertItem is always non-null
    }
    if (ListView1.InsertItem != null) // probably an unnecessary test
        ListView1.InsertNewItem(false);
}

宇宙で最もエレガントなソリューションではないかもしれませんが、機能しているようで、デフォルトで動作する方法から確実にすべてを打ち負かします. ImageButtons を使用していなければ、これは不要だったかもしれませんが、保存、編集、削除、元に戻す、および挿入の機能は、16x16 の画像で簡単に表現できます。

いずれにせよ、私はそれを取ります。:-)

于 2012-08-30T00:36:26.010 に答える