0

Web開発に移行したばかりで、asp.netとvb.netを使用して以下の要件を実装する方法を知る必要があります。

フォームには、ユーザーが入力する3つのフィールドがあります。これらの3つの値に基づいて、4番目のフィールドに自動入力する必要があります。私はこれを次のように実装することを計画しました

  1. 最初の3つの入力に基づいて4番目のフィールドの可能な値を計算する関数を含む別のクラスファイルを作成します。この関数は、1〜10の値を返すことができます。そこで、4番目のフィールドにドロップダウンを使用し、ユーザーが適切な値を選択できるようにすることにしました。

  2. 3番目のフィールドのonchange関数で上記の関数を呼び出し、戻り値を取得して使用して4番目のフィールドにデータを入力します。配列フィールドで戻り値を取得することを計画しています(これにはポストバックが必要ですか?

これを実装するためのより良い方法があるかどうか教えてください。

ありがとう。

4

3 に答える 3

2

Javascript でこれを行うことを検討することをお勧めします。純粋な Javascript を使用するか、 jQuery (私のお気に入り) のような優れたライブラリを使用して、フィールドを非常に簡単に読み取って制御できます。このようにすると、ポストバックは不要になり、4 番目のフィールドがすぐに更新されます。(ユーザーにとってはうれしい)

ほとんどの場合、ASP.NET でも実行できます。私の知る限り、ASP.NET の "onchange" にはまだ Javascript が必要です。何かを変更すると、必ずポストバックが発生します。

于 2010-11-15T14:34:00.443 に答える
0

JavaScript が必要であるか、フォーム要素に autopostback=true を設定する必要があります。

ユーザーの観点からは、javascript を使用して表示用のフィールドにデータを入力するのが最善ですが、フォームが送信されたら、バックエンド関数を使用して検証します。これにより、ユーザーが値を変更していないことが確認されます。

于 2010-11-15T16:02:43.880 に答える
0

簡単な方法は、UI に jQuery を使用することです (そうすれば、面倒な JavaScript について心配したり、ブラウザーの互換性に対処したりする必要がなくなります)、データをサーバーに呼び出すことができます。サーバーの場合、ループする値に対して JSON を返すのが最も簡単な方法です。

jQuery を含めます。

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

次に、JavaScript のハンドルを追加します。

<script type="text/javascript">
function autoPopulate() {
   var value1 = $('#ddl1').val();
   var value2 = $('#ddl2').val();
   var value3 = $('#ddl3').val();
   var url = 'path/to/your/file.aspx?value1=' + value1 + '&value2=' + value2 + '&value3=' + value3;
   $.getJSON(url, function(data) {
      data == null ? return false : data = eval(data);
      var ddl = $('#ddl4')[0];
      for (i = 0; i < data.length; i++) {
         var option = new Option(data[i][0], data[i][1]);
         if ($.browser.msie) {
            ddl.add(option);
         } else {
            ddl.add(option, null);
         }
      }
   }
}
</script>

(はい、ネイティブループを使用したことは知っていますが、今日は少し怠惰です:))

ここで、サーバー側のコードでは、ページのコードが次の形式でデータを返すようにする必要があります。

[['value1','text1'],['value2','text2'],['value3','value3']]

次のようなもの:

<script type="vb" runat="server">
Private Sub Page_Init()
   // get your data
   // loop through it and add in values
   // ex.
   Dim result As String = "[" //start multi-dimensional array
   For Each Item As String In data
      result += String.Format("['{0}','{1}'],", _value, _text)
   Next
   result = result.SubString(0, result.Length - 1) // removes trailing comma
   result += "]" // closes off m-array
   Response.Write(result)
   Response.Flush()
End Sub
</script>
于 2010-11-15T17:54:46.427 に答える