Каскадная проблема ASPxComboBox - PullRequest
       14

Каскадная проблема ASPxComboBox

0 голосов
/ 05 сентября 2010

У меня есть два комбо и одна кнопка. Заполнение дочернего комбинированного списка на основе значения родительского комбинированного ключа. нажмите на родительское комбо, значение изменится на дочернее комбо, нажмите на кнопку, чтобы показать выбранный комбо текст. Я могу сделать это ниже в моем синтаксисе. я использую базу данных северного ветра.

<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 значение события. Я изменяю дочернее комбо-значение. Почему бы не изменить значение в событии кнопки? Если есть какие-либо вопросы, пожалуйста, спросите меня. Спасибо заранее.

1 Ответ

0 голосов
/ 06 сентября 2010

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

<dx:ASPxComboBox ID="ASPxComboBoxChild" runat="server" TextField="ProductID" ValueField="ProductID"
                ValueType="System.Int32">
            </dx:ASPxComboBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...