Заполните GridViewComboBoxColumn на основе другого GridViewComboBoxColumn

У меня есть два DataGridViewComboBoxColumns, один для элементов, а другой для типов количества элемента; (тонна, кг, метр и т. д.) выбранного элемента.

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

Это отлично работает со странной проблемой; когда я выбираю элемент из первого поля со списком, его количество будет заполнено нормально, и я могу выбрать требуемый тип количества. Но когда я перехожу к следующей строке, чтобы добавить еще один элемент; Я выбираю товар, и при выборе типа его количества предыдущее выбранное количество исчезает. Я застрял в этой проблеме с трех дней, не могли бы вы помочь. Ниже приведен мой код, я использую события EditingControlShowing и SelectionChangeCommitted.

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        //if (dataGridView1.CurrentCell.ColumnIndex == 0)
        //{
            if (dataGridView1.CurrentCell.ColumnIndex == 0 && e.Control is ComboBox)
            {
                cbxItemCode = e.Control as ComboBox;

                cbxItemCode.SelectionChangeCommitted -= new EventHandler(cbxItemCode_SelectionChangeCommitted);
                cbxItemCode.SelectionChangeCommitted += new EventHandler(cbxItemCode_SelectionChangeCommitted);
            } else
        {
            cbxItemCode.SelectionChangeCommitted -= new EventHandler(cbxItemCode_SelectionChangeCommitted);
        }
   }

и это код SelectionChangeCommitted:

    private void cbxItemCode_SelectionChangeCommitted(object sender, EventArgs e)
    {
        ComboBox cmbBox = (ComboBox)sender;
        if (cmbBox != null)
        {
            int intValue = Convert.ToInt16(cmbBox.SelectedValue);
            populateQuantyDescColumn(intValue);
        }
    }

Событие SelectionChangeCommitted вызовет populateQuantityDescColumn(intValue), передав ему код элемента:

    public void populateQuantyDescColumn(int ItmsID)
    {
        if (!(con.State == ConnectionState.Open))
        {
            con.Open();
        }

        MySqlCommand sc = new MySqlCommand("select qty.id, qty.Ar_Desc from minierp_db.itemquantity as iq, " +
                                           " minierp_db.quantity as qty, minierp_db.items as it " +
                                           " where it.id = iq.items_id and qty.id = iq.quantity_id and " +
                                           " it.id = " + ItmsID, con);
        MySqlDataReader reader;

        try
        {
            reader = sc.ExecuteReader();
            DataTable dt = new DataTable();
            //dt.Clear();

            dt.Columns.Add("id", typeof(string));
            dt.Columns.Add("Ar_Desc", typeof(string));
            dt.Load(reader);

            qty_desc.ValueMember = "id";
            qty_desc.DisplayMember = "ar_desc";
            qty_desc.DataSource = dt;
        }
        catch (Exception e)
        {
            MessageBox.Show("Exception - populateQuantyDescColumn(): " + e.Message + e.Source);
        }
        finally
        {
            con.Close();
        }
    } //populateQuantyDescColumn

любая помощь будет оценена, спасибо заранее.


person jotnarta    schedule 13.12.2015    source источник
comment
Под предыдущим выбранным количеством исчезнет, ​​что вы имеете в виду? Как вы это проверяете? Откуда вы знаете, что оно исчезает?   -  person AnjumSKhan    schedule 13.12.2015
comment
Когда я перехожу к следующей строке, чтобы выбрать другой элемент, предыдущее поле со списком типа количества исчезает.   -  person jotnarta    schedule 13.12.2015
comment
Вы опубликовали все, кроме кода XAML.   -  person AnjumSKhan    schedule 13.12.2015
comment
например, у меня есть два поля со списком, скажем, одно для стран и одно для городов. Поле со списком городов должно быть заполнено в соответствии с выбранной страной. Когда я выбираю страну из первого поля со списком, второе поле со списком городов будет заполнено соответствующим образом. После того, как я выбрал город для данной страны и перешел к следующей строке, чтобы добавить другую страну, когда я выберу город для вновь добавленной страны, предыдущий выбранный город исчезнет.   -  person jotnarta    schedule 13.12.2015