2010-09-05 7 views
0

J'ai deux combo et un bouton. remplissage combo enfant sur la base de la valeur de la clé combo parent. cliquez sur la valeur de combo parent va changer sur combo enfant, cliquez sur le bouton montrer ce combo texte sélectionné.Je peux le faire ci-dessous dans ma syntaxe.J'utilise la base de données du vent du nord.cascade ASPxComboBox problème

<div> 
      <dx:ASPxComboBox ID="ASPxComboBoxParent" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ASPxComboBoxParent_SelectedIndexChanged" 
       TextField="ShipName" ValueField="OrderID" ValueType="System.Int32"> 
      </dx:ASPxComboBox> 
      <dx:ASPxComboBox ID="ASPxComboBoxChild" runat="server" TextField="ProductID" ValueField="OrderID" 
       ValueType="System.Int32"> 
      </dx:ASPxComboBox> 
      <dx:ASPxButton ID="ASPxButton1" runat="server" OnClick="ASPxButton1_Click" Text="ASPxButton"> 
      </dx:ASPxButton> 
      <dx:ASPxLabel ID="ASPxLabelMessage" runat="server"> 
      </dx:ASPxLabel> 
     </div> 

C# syntaxe

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!this.IsPostBack) 
      { 
       NorthwindDataContext db=new NorthwindDataContext(); 
       var r=from p in db.Orders 
         select p; 
       ASPxComboBoxParent.DataSource = r; 
       ASPxComboBoxParent.DataBind(); 
      } 

     } 

     protected void ASPxComboBoxParent_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      NorthwindDataContext db=new NorthwindDataContext(); 
      int a= Convert.ToInt32(ASPxComboBoxParent.SelectedItem.Value); 
      var r = from p in db.Order_Details 
        where p.OrderID == a 
        select p; 

      ASPxComboBoxChild.DataSource = r; 
      ASPxComboBoxChild.DataBind(); 
      ASPxComboBoxChild.SelectedIndex = 1; 
     } 

     protected void ASPxButton1_Click(object sender, EventArgs e) 
     { 


      ASPxLabelMessage.Text = "Parent is" + Convert.ToString(ASPxComboBoxParent.SelectedItem.Text) + "And child is" + Convert.ToString(ASPxComboBoxChild.SelectedItem.Text); 
     } 

Après avoir cliqué sur le combo parent, remplissage combo enfant, mais cliquez sur le bouton toujours obtenir l'indice combo enfant = 0 événement valeur i change la valeur de combo enfant. Pourquoi ne pas modifier la valeur d'un événement de bouton? si avoir une requête plz me demander.thanks à l'avance.

Répondre

0

Le problème apparaît car la propriété ASPxComboBoxChild.ValueField pointe vers une valeur contenant les mêmes valeurs. C'est à dire. Lorsque l'index sélectionné ASPxComboBoxParent est modifié, la collection Items de ASPxComboBoxChild est remplie avec des éléments dont la propriété Value est la même. Étant donné que ASPxComboBox fait la distinction entre les éléments par leur valeur, le problème apparaît. La solution est simple:

<dx:ASPxComboBox ID="ASPxComboBoxChild" runat="server" TextField="ProductID" ValueField="ProductID" 
       ValueType="System.Int32"> 
      </dx:ASPxComboBox>