0

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

我在一个表单中有三个字段,由用户填写。基于这三个值,我需要自动填充第四个字段。我计划通过以下方式实现这一点

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

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

如果有更好的方法来实现这一点,请告诉我。

谢谢。

4

3 回答 3

2

您可能需要考虑使用 Javascript 执行此操作。您可以使用纯 Javascript 或使用像jQuery(我最喜欢的)这样的优秀库非常轻松地读取和控制字段。如果您这样做,则不需要回发,并且第 4 个字段将立即更新。(对您的用户很好)

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

于 2010-11-15T14:34:00.443 回答
0

一种简单的方法是将 jQuery 用于 UI(这样您就不必担心冗长的 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 回答
0

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

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

于 2010-11-15T16:02:43.880 回答