【问题标题】:How i can update my second combobox when "SelectedItem" is changed更改“SelectedItem”时如何更新我的第二个组合框
【发布时间】:2015-10-05 11:31:51
【问题描述】:

我在一个表单中有两个组合框,第一个组合框显示卡车的每个“标记”,第二个可以显示每个“标记”的模型。例如,如果标记是沃尔沃,则第二个组合框可能会显示“FH,FH6 ...”,否则如果标记是“MAN”,则第二个组合框可能会显示“TGX,TGX 38”...

我尝试循环刷新第二个组合框,每次都会更改第一个组合框。

  while (comboBox1.SelectedIndex == -1)
            {
                comboBox2.Items.Clear();
                if (comboBox1.SelectedIndex == 1)
                {


                    comboBox2.DisplayMember = "Modelo";
                    comboBox2.DataSource = d.Tables["Modelos-MAN"].DefaultView;


                }
                if (comboBox1.SelectedIndex == 2)
                {

                    comboBox2.DisplayMember = "ModeloV";
                    comboBox2.DataSource = d.Tables["Modelos-VOLVO"].DefaultView;
                    comboBox2.Refresh();
                }
            }

            if (comboBox1.SelectedIndex==1)
            {


                comboBox2.DisplayMember = "Modelo";
                comboBox2.DataSource = d.Tables["Modelos-MAN"].DefaultView;


            }
            if(comboBox1.SelectedIndex == 2)
            {

                comboBox2.DisplayMember = "ModeloV";
                comboBox2.DataSource = d.Tables["Modelos-VOLVO"].DefaultView;
                comboBox2.Refresh();
            }

如果我选择“MAN”,它会显示“MAN”模型,然后如果我更改并选择“Volvo”,第二个组合框会显示“System.Data.DataRowView”。

发生了什么?我该如何解决?

注意:我也有一个生成卡车“标记”和“模型”的方法:

  public DataSet LoadMarkAndModel()
        {


            var marcas = new string[6];
            marcas[0] = "Marca ...";
            marcas[1] = "MAN";
            marcas[2] = "Volvo";//Linha 2 coluna 2
            marcas[3] = "DAF";
            marcas[4] = "Renault";//Linha 4 coluna 2
            marcas[5] = "Mercedes-Benz";
            var modelosMAN = new string[7];
            var modelosVolvo = new string[5];

            modelosMAN[0] = "TGX";
            modelosMAN[1] = "TGX D38";
            modelosMAN[2] = "TGX EfficientLine 2";
            modelosMAN[3] = "TGS";
            modelosMAN[4] = "TGA";
            modelosMAN[5] = "TGA-WW";
            modelosMAN[6] = "TGM";


            modelosVolvo[0] = "FH16";
            modelosVolvo[1] = "FH";
            modelosVolvo[2] = "FM";
            modelosVolvo[3] = "FE";
            modelosVolvo[4] = "FL";


            DataSet data = new DataSet("DataSetOfTrucks");
            DataTable table = new DataTable("Marcas");
            DataColumn colunaID = new DataColumn("ID", typeof(int));
            DataColumn colunaMarca = new DataColumn("Marca", typeof(string));
            //table.Columns.Add("Description", typeof(string));
            table.Columns.Add(colunaID);
            table.Columns.Add(colunaMarca);



            for (int i = 0; i < marcas.Length; i++)
            {

                DataRow manyMark = table.NewRow();
                manyMark["ID"] = i + 1;
                manyMark["Marca"] = marcas[i];
                table.Rows.Add(manyMark);


            }
            data.Tables.Add(table);


            DataTable modelsTable = new DataTable("Modelos-MAN");
            DataColumn modelsIDParent = new DataColumn("IDP", typeof(int));
            DataColumn modelo = new DataColumn("Modelo", typeof(string));
            modelsTable.Columns.Add(modelsIDParent);
            modelsTable.Columns.Add(modelo);

            int m = 0;


            while (m<modelosMAN.Length)
            {
                DataRow manyModelsMAN = modelsTable.NewRow();
                manyModelsMAN["IDP"] = 1;
                manyModelsMAN["Modelo"] = modelosMAN[m];
                modelsTable.Rows.Add(manyModelsMAN);
                m++;
                //if (m > modelosMAN.Length)
                //    break;

            }
            data.Tables.Add(modelsTable);



            ////vOLVO
            DataTable modelsTableVOLVO = new DataTable("Modelos-VOLVO");
            DataColumn modelsIDParentVOLVO = new DataColumn("IDPVolvo", typeof(int));
            DataColumn modeloVolvo = new DataColumn("ModeloV", typeof(string));

            modelsTableVOLVO.Columns.Add(modelsIDParentVOLVO);
            modelsTableVOLVO.Columns.Add(modeloVolvo);

            int count = 0;

            while (count < modelosVolvo.Length)
            {
                DataRow manyModelsVolvo = modelsTableVOLVO.NewRow();
                manyModelsVolvo["IDPVolvo"] = 2;
                manyModelsVolvo["ModeloV"] = modelosVolvo[count];
                modelsTableVOLVO.Rows.Add(manyModelsVolvo);
                count++;


            }
            data.Tables.Add(modelsTableVOLVO);


            return data;
        }

【问题讨论】:

    标签: c# arrays combobox datatable dataset


    【解决方案1】:
    comboBox1_SelectedIndexChanged()
    {
     comboBox2.DataSource =null;
    
     if (comboBox1.SelectedIndex==1)
                {
                    comboBox2.DataSource = d.Tables["Modelos-MAN"];
                    comboBox2.ValueMember="Modelo";
                    comboBox2.DisplayMember = "Modelo";
                }
     if(comboBox1.SelectedIndex == 2)
                {
                    comboBox2.DataSource = d.Tables["Modelos-VOLVO"];
                    comboBox2.DisplayMember = "ModeloV";
                    comboBox2.ValueMember = "ModeloV";
    
                }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 2016-09-01
      • 1970-01-01
      • 2017-01-01
      • 2021-05-03
      • 2017-10-24
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多