C#/ASP.NET と SQL サーバー データベースを使用して、Visual Studio 2010 で作業しています。マネージャーが従業員にさまざまなタスクを割り当てることができるようにする Web サイトを修正しようとしています。現在の問題は、2 人のマネージャーが同時に作業している場合、間違った従業員がタスクに割り当てられる可能性があることです。従業員のリストは、グリッドビューで表されます。
この問題は、ユーザーの 1 人がグリッドビューで古いデータを見ているために発生しているようです。
最初の人がリストをロードすると、GridView は次のようになります。
-従業員1
-従業員 2
-従業員 3
-従業員 4
次に、2 人目の担当者が入ってきて、従業員 2 に割り当てを行います。これにより、従業員 2 がリストから削除されます。実際のリストは次のようになります。
-従業員1
-従業員 3
-従業員 4
ただし、ページがまだ更新されていないため、最初の人にはまだこれが表示されます。
-従業員1
-従業員 2
-従業員 3
-従業員 4
次に、最初の人が従業員 3 にタスクを割り当てようとします。彼らにはまだ古いリストが表示されます。クリックして割り当てを行うと、ページがサーバーにポストバックされます (明らかに、gridview コントロールで行を選択することはサーバー側のイベントであるため、このhttp://forums.asp. net/t/1706468.aspx/1 )。ページがリロードされ、ポストバック イベントを実行しようとし、コントロールがまだ有効でないことをチェックして確認します (ポストバック イベントが処理されるはずの後にデータ バインディングが発生するため)。(ページ読み込み時のイベントの順序は次のとおりですhttp://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx ) グリッドビューがデータバインドされると、データは最新の状態になりますこのような:
-従業員1
-従業員 3
-従業員 4
その後、ポストバック イベントを処理できます。ポストバック イベントには、選択されたコントロールの行インデックスが含まれます。3 番目の行が選択されているため、ポストバック イベントは従業員 4 (現在 3 番目の行にいる) をグリッドから取得します。次に、従業員 3 の一意の ID が必要なときに、その情報を使用して従業員 4 の一意の ID を取得します。この状況で正しい従業員 ID を確実に取得するにはどうすればよいでしょうか?
問題は、データバインディングが発生してグリッドが変更された後にクリックが適用されることです。ページがポストバックしないようにするのは良いことだと思いましたが、グリッドビューの操作はすべてサーバー側であるため、それはできないと思います。ポストバックによってバインドされたデータを保持する方法がわからないため、ポストバックするたびに、新しい、潜在的に異なるデータを取得する必要があります。ほとんどのオプションを試したような気がします。私の推論に何か問題があると思いますか、または新しいことを試すための提案はありますか? ページが投稿される前に従業員 ID を取得する方法はありますか?
ページは 1 人のユーザーに対してのみ正常に機能します。問題は、複数のユーザーが同時に変更を行っている場合にのみ発生します。