2010-11-15 120 views
0

我刚刚转移到Web开发,需要知道如何使用asp.net和vb.net实现以下要求。ASP.Net根据其他字段自动填充字段

我有三个字段的表格由用户填写。基于这三个值,我需要自动填充第四个字段。我已经计划通过以下方式

  1. 写一个单独的类文件,一个函数来计算基于3个月1日投入第4场的可能值来实现这一点。该函数可以返回1-10个值之间的某个值。所以我决定使用第4个字段的下拉菜单,并允许用户选择适当的值。

  2. 在第3个字段的onchange函数中调用上述函数,并采用返回值填充第4个字段。我打算到数组字段的返回值。(这是否需要一个回?

请让我知道如何是否有实现这个更好的办法。

谢谢。

回答

2

你可能想要考虑用Javascript做到这一点。您可以使用纯Javascript或使用像jQuery(我的最爱)这样的好库来轻松阅读和控制字段。如果你这样做,不需要回传,第4场会立即更新。 (对你的用户来说很好)

你也可以用ASP.NET做到这一点。就我所知,ASP.NET中的“onchange”仍然需要Javascript,它只是为你做了一些。当你改变某些东西时,后卫肯定会发生。

0

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

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

+0

感谢。我会使用javascript – Phoenix 2010-11-15 18:00:31

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> 
+0

非常感谢。我会试试这个,让你知道。 – Phoenix 2010-11-15 18:00:01