【问题标题】:ASP.Net Auto-populate field based on other fieldsASP.Net 根据其他字段自动填充字段
【发布时间】:2010-11-15 14:28:21
【问题描述】:

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

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

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

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

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2021-08-09
          • 1970-01-01
          • 2021-05-12
          • 2011-01-20
          • 2012-06-26
          • 1970-01-01
          • 1970-01-01
          • 2020-04-21
          • 1970-01-01
          相关资源
          最近更新 更多