2012-11-18 1 views
0

J'ai une forme simple avec une liste déroulante binded à un tableau de chaînes (comme un exemple simple). Le formulaire est envoyé lorsque l'utilisateur clique sur un bouton.liste déroulante-binded données ASP sans autopostback

Je veux interroger l'élément sélectionné dans la liste. J'ai lu le membre SelectedValue de la liste déroulante qui contient toujours l'élément par défaut, peu importe ce que je sélectionne dans le formulaire.

Je ne peux pas utiliser autopostback sur la liste comme dans mon environnement de production, le formulaire est affiché dans div dynamique à l'aide jquery.

Si je supprime la liaison et ajouter les éléments de liste dans le fichier asp en utilisant les balises de listItems, que cela fonctionne comme par magie.

Mon exemple de code asp:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
     <br /> 
     <asp:DropDownList ID="DropDownList1" runat="server"> 
     </asp:DropDownList> 
     <br /> 
     <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 

    </div> 
    </form> 
</body> 
</html> 

Et le fichier code-behind:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     string[] items = { "bindItem1", "bindItem2", "bindItem3" }; 
     DropDownList1.DataSource = items; 
     DropDownList1.DataBind(); 
    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     string text = TextBox1.Text; 
     string item = DropDownList1.SelectedValue; 
    } 
} 

Répondre

3

Dans le page_load ne le databinding que si Page.IsPostBack == Faux. Votre code maintenant sur chaque chargement de page, liera les données encore et encore, de sorte que la valeur sélectionnée ne change pas.

+0

Merci! Une telle erreur boiteuse ... – hthms