2008-12-18 129 views
0

我有本框這激發了使用jQuery Ajax請求:ASP.NET - 用jQuery Ajax請求

<asp:TextBox ID="postcodeTextBox" runat="server" Text='<%# Bind("POSTAL_ZIP_CODE") %>'> 

$(document).ready(PageLoad); 

function PageLoad() { 
    $(container + 'parentProjectTextBox').change(GetProjectName); 
} 

function GetProjectName() { 
    var projectNumber = $(this).val(); 
    if (projectNumber == '') return; 
    $(container + 'parentProjectPanel').block({ message: '<img src="../Resources/RadControls/Ajax/Skins/Default/loading7.gif" />' }); 
    $.ajax({ 
     type: 'POST', 
     url: projectMasterWebServicesUrl + 'GetProjectName', 
     data: "{'projectNumber':'" + projectNumber + "'}", 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: GetProjectNameOnSuccess, 
     error: GetProjectNameOnError 
    }); 
} 

這Ajax請求得到一個列表來填充這個下拉菜單:

     <asp:DropDownList ID="cityDropDownList" runat="server" OnDataBound="cityDropDownList_DataBound"> 
          <asp:ListItem Text="...Select..." Value="0"> 
          </asp:ListItem> 
         </asp:DropDownList> 

一切工作正常。我遇到的唯一問題是,當我更新我的formView priod保存該記錄時,我無法看到設置爲該下拉列表的值。當我在客戶端填充這個下拉列表時,我將ASP.NET丟失了這一點......

有沒有人有任何見解?

顯然,當我打開/關閉EnableEventValidation屬性,用於頁我有時會得到正確的值.....

謝謝!

回答

1

您應該創建一個隱藏的字段存儲值。在Javascript中更新HiddenField,然後在服務器端讀取它。另外,如果您有EventValidation = true,並且您更改了下拉列表中的項目,您將獲得衆所周知的例外。

+0

是的,我想到了這一點,但我只在調試時纔得到這些異常......當我將我的應用程序部署到我們的測試環境時,這些異常從不會發生!!!!! – 2008-12-18 03:05:40

+0

即使我有EventValidation = true – 2008-12-18 03:06:15

0

這可能不是問題......但是您是否正在檢查Page_Load中的Page.IsPostBack?

我犯了那麼多錯誤。

如果您正在從Page_Load加載該下拉控件,並且您沒有檢查 如果(!Page.IsPostback) 您將重新加載該控件。然後,當您從下拉菜單中獲得值時,價值已經消失,因爲您重新下載了下拉菜單。