2010-09-05 2 views
0

У меня есть два комбо и одна кнопка. child combo fill на основе значения родительского комбо-ключа. щелкните на родительском значении комбо, измените его на дочернем комбо, нажмите кнопку, чтобы показать эти комбинированные выделенные тексты. Я могу сделать это в своем синтаксисе. Используйте базу данных северного ветра.Каскад ASPxComboBox проблема

<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# синтаксис

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

После нажатия родительского комбо, ребенок комбо заливку Но нажмите на кнопку всегда получить ребенка комбо событие индекс = 0 значение я изменить значение комбинированного ребенка. Почему бы не изменить значение на событии кнопки? если есть какие-либо вопросы plz спрашивайте, пожалуйста.

ответ

0

Проблема возникает из-за того, что свойство ASPxComboBoxChild.ValueField указывает на значение, содержащее те же значения. То есть при изменении выбранного индекса ASPxComboBoxParent коллекция элементов ASPxComboBoxChild заполняется элементами, значение Value которых одинаково. Поскольку ASPxComboBox различает элементы по их значению, возникает проблема. Решение легко:

<dx:ASPxComboBox ID="ASPxComboBoxChild" runat="server" TextField="ProductID" ValueField="ProductID" 
       ValueType="System.Int32"> 
      </dx:ASPxComboBox> 
Смежные вопросы