0

私は Web アプリケーションに取り組んでいます (ASP.NET 2.0 (C#) と jQuery を使用)。

私のアプリケーションには、従業員が会社の記録を入力できるインターフェイスがあります。会社名、担当者、電話番号などの基本的なフィールドを備えたインターフェイスを提供しました。ご存知のように、いくつかの会社には支店があり、いくつかの会社には少数 (1 から 10)、いくつかの会社には多くの支店 (100 から 200) があります。また、jQuery を使用した動的インターフェースも提供しています。これにより、従業員は特定の会社の支店数に応じて支店を追加できます。

さらに、jQuery の append 関数を ..

$("#branches").append("branch html fields text liek a html input field with id 'Namebranch1' ");

現在、追加することで、特定のブランチを削除するための各ブランチ フィールドを個別に備えたボタンも用意されています。私が使用した削除のために

$("#branch1").remove()

たとえば、5 つのブランチを追加したとします。送信する前に、ブランチ番号 3 は入力する必要がないと感じたので、そのブランチ データを削除しました。追加と削除のプロセスは次のとおりです。

1,2,3,4,5

その後、3番目のブランチを削除し、現在は

1,2,4,5

4 つの要素があるため、ユーザーがブランチを追加または削除するたびに、javascript 変数からそれぞれ 1 を追加し、1 を減算します。そして、その変数を隠しフィールドに入力すると、ユーザーがデータを送信したときに、ユーザーがブランチを追加した正しいカウント数が得られ、このカウントに基づいて、何回ループを実行して、すべてのブランチ データを個別に取得する必要があります。

しかし、問題は、ユーザーがフォームを送信したときにループを 4 回実行していることです。つまり、1、2、および 4 つの分岐のデータを取得しますが、4 サイクルが完了するとループが停止するため、5 番目の分岐のデータです。実際には 4 が欠落します。ユーザーがフォームを送信するときに投稿される要素は (branchName5、branchTitle5 など) であるためです。

私が必要なものを理解していただければ幸いです。この問題の論理的な解決策を教えてください。

ありがとう

4

2 に答える 2

1

非表示のカウンター変数を取り除き、Request.Form.Keys を反復処理して branch* を探します。次に、branch で始まるフォーム変数を処理します。

class Branch { public string Name; public string Title; }

void OnLoad(EventArgs e) {
   base.OnLoad(e);

   var branches = new Dictionary<int, Branch>();
   foreach (string key in Request.Form.Keys) {
     if (!key.StartsWith("branch")) continue;

     int id;
     if (key.StartsWith("branchTitle")) {
       id = int.Parse(key.Substring("branchTitle".Length));
       branches.Ensure(i).Title = Request.Form[key];
     } else if (key.StartsWith("branchName")) {
       id = int.Parse(key.Substring("branchName".Length));
       branches.Ensure(i).Name = Request.Form[key];
     }            
   }
}

// Ensure extension method
T Ensure<K, T>(this Dictionary<K, T> d, K key) where T:new {
   if (!d.ContainsKey(key)) {
      d.Add(key, new T());
   }
   return d[key];
}
于 2009-01-25T15:13:21.573 に答える
0

多分これは手がかりですか?送信中に ....

$('#branches').each( function (i) { this.id = 'branch' + i } );
于 2009-01-25T14:33:11.013 に答える