質問: リスト内の行を編集した後にアイテムの位置を維持する...試してもよろしいですか? 私は手動で名前のアルファベット順にソートされたオブジェクトの配列にASP.NET ListViewをバインドしています。項目を編集した後、DataSourceが再び設定され、DataBindが呼び出されます。名前が変更された場合、編集したアイテムが別のページに移動している可能性があります。 例えば; Hot DogをSausageに改名したので、SausageはItemUpdatingの完了後に移動しました。 ``` --- OLD LIST --- --- NEW LIST --- Hamburger Hamburger Hot Dog______ Pizza Pizza |_____Sausage ``` **フォームから期待されるこの動作ですか?行を編集すると、その行を保存した後にその行が表示されるはずですか?それはまったく同じ位置にあるべきですか?保存したばかりのレコードを*のみ*表示する必要がありますか?** 保存した後に前のオーダーを維持し、潜在的に*変更*するという技術的側面については、 私は*なぜこれが起こっているのか*を知っています。私はそれを避けるためのアイデアを探しています。 私は、ItemTemplateにEditItemTemplateのコントロールを組み合わせることと、ListView EditIndexに基づいて読み取り専用/編集可能なコントロールに可視性を設定することについて考えています。 これは実行可能なようですが、私はあなたが良い人は他のアイデアを持っている場合は私は思っています。
回答: いくつかのケースでは、リストを頼りにしてアイテムを残しておく必要があることがわかりました。プログラマーは何が起こったのか理解していますが、平均的なユーザーはアイテムが削除されたと思うかもしれません。 この動作を示すサンプルWebサイトをまとめました。実際には非常に簡単に達成できますし、あなたのプロジェクトに自分のメソッドを適応させることができると確信しています。 ナットシェルでは、グリッドがバインドされるたびに、ユーザーの選択(またはデフォルトのソート)によってデータのリストを並べ替えますが、グリッドにバインドする直前に、その順序を保持するかどうかをチェックします私は、グリッドのDataKeyArrayから最後のシーケンス番号を抽出し、それらのシーケンス番号をそれぞれの項目に関連付けます。彼らが注文を保存したくない場合は、ソートされたリストの各項目に増分シーケンス番号を単に関連付けるだけです。次に、シーケンス番号でソートするだけです。 プロジェクトを見てくださいもっと理にかなっています。