ASP.Net自动填充基于其他字段的字段

时间:2010-11-15 14:28:22

标签: asp.net vb.net auto-populate

我刚刚开始进行Web开发,需要知道如何使用asp.net和vb.net实现以下要求。

我在表单中有三个由用户填充的字段。基于这三个值,我需要自动填充第4个字段。我计划以下列方式实现这个

  1. 使用函数编写单独的类文件,以根据前3个输入计算第4个字段的可能值。此函数可以返回1-10个值之间的某些值。所以我决定使用第4个字段的下拉菜单,并允许用户选择合适的值。

  2. 在第3个字段的onchange函数中调用上述函数,并使用返回值填充第4个字段。我打算在数组字段中获取返回值。(这需要回帖吗?

  3. 如果有更好的方法可以实现这一点,请告诉我。

    感谢。

3 个答案:

答案 0 :(得分:2)

您可能需要考虑使用Javascript执行此操作。您可以使用纯Javascript轻松读取和控制字段,或者使用像jQuery这样的好库(我最喜欢的)。如果你这样做,不需要回发,第4个字段会立即更新。 (很适合您的用户)

大多数情况下,您也可以使用ASP.NET。据我所知,ASP.NET中的“onchange”仍然需要Javascript,它只是为你做了一些。当你改变某些东西时肯定会发生回发。

答案 1 :(得分:0)

您需要javascript或在表单元素上设置autopostback = true。

从用户的角度来看,最好的方法是使用javascript填充字段进行显示,但是在提交表单时使用后端函数来验证它。这将确保用户不会更改值。

答案 2 :(得分:0)

一种简单的方法是使用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>