2008-12-18 10 views
0

J'ai ce textBox qui déclenche une demande ajax en utilisant jQuery:ASP.NET - requêtes Ajax avec jQuery

<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 
    }); 
} 

Cette demande ajax obtient une liste pour remplir cette liste déroulante:

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

Tout fonctionne bien. Le seul problème que je rencontre est que lorsque je mets à jour ma période de formulaire pour enregistrer cet enregistrement, je ne peux pas voir la valeur qui a été définie dans cette liste déroulante. Comme je remplis cette liste déroulante dans le côté client, je suppose que ASP.NET perd la trace de cela ....

Quelqu'un a-t-il des idées?

Apparemment, quand j'interrupteur marche/arrêt de la propriété EnableEventValidation pour cette page je parfois obtenir la valeur correcte .....

Merci!

Répondre

1

Vous devez créer un magasin de champ caché de cette valeur. Mettez à jour ce HiddenField dans votre Javascript et lisez-le du côté du serveur. En outre, si vous avez EventValidation = true et que vous modifiez les éléments dans la liste déroulante, vous obtiendrez des exceptions bien connues.

+0

Ouais j'ai pensé à ça mais je ne reçois ces exceptions que lors du débogage ... Quand je déploie mon application dans notre environnement de test, ces exceptions ne se produisent jamais !!!!! –

+0

Même si j'avais EventValidation = true –

0

Ce n'est peut-être pas le problème ... mais recherchez-vous Page.IsPostBack dans votre Page_Load?

J'ai fait cette erreur trop souvent.

Si vous chargez ce contrôle déroulant à partir de Page_Load, et que vous ne vérifiez pas si (! Page.IsPostback) vous rechargez le contrôle. Ensuite, quand vous obtenez la valeur de la liste déroulante ... la valeur est partie parce que vous avez rechargé la liste déroulante.

+0

Ce n'est pas le problème ... Je vérifie déjà que ... –