2010-11-15 118 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