0

私はC#ウィンドウフォームアプリケーションに取り組んでいます。コンボボックスで選択したアイテムのIDを取得したかった。以下は私のコードです。

  private void ProductForm_Shown(object sender, EventArgs e)
    {
        SqlCeConnection Connection = new SqlCeConnection(ConString);
        Connection.Open();
        SqlCeDataAdapter da = new SqlCeDataAdapter("Select * from CastingMaterial", Connection);
        DataTable dt = new DataTable();
        da.Fill(dt);
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            ProductsComboBox.Items.Add(dt.Rows[i]["PartName"]);

        }
        ProductsComboBox.DisplayMember = "PartName";
        ProductsComboBox.ValueMember = "PartId";
        Connection.Close();
    }

    private void ProductsComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        int ProductIndex = ProductsComboBox.SelectedIndex;
        string productName = ProductsComboBox.Text.ToString();
        int ProductId =Convert.ToInt32(ProductsComboBox.SelectedValue);
        SqlCeConnection Connection = new SqlCeConnection(ConString);
        Connection.Open();
        String Query = "SELECT * From CastingMaterial where PartId=@PartId";
        SqlCeDataAdapter da = new SqlCeDataAdapter(Query, Connection);
        da.SelectCommand.Parameters.AddWithValue("PartId", ProductId);
        DataSet ds = new DataSet();
        SqlCeCommandBuilder commandBuilder = new SqlCeCommandBuilder(da);

        BindingSource bsource = new BindingSource();

        da.Fill(ds, "CastingMaterial");
        bsource.DataSource = ds.Tables["CastingMaterial"];
        Productgv.DataSource = bsource;
        Connection.Close();
    }

どんな助けでも本当にありがたいです。

4

2 に答える 2

0

項目を DataRows として追加する必要があります。代わりに、列の 1 つから値を抽出しています。

 ProductCombo.Items.Add( dt.Rows[i] );

次に、DisplayMember と ValueMember を正しく設定しますが、項目を正しく追加していないため、これは効果がありません。

于 2012-07-29T15:39:10.477 に答える
0

率直に言って、質問をもっと明確に投稿する必要があります。

コンボ ボックスの選択された ID をどのように取得しますか?
また、その ID をどのような目的で使用するつもりでしたか?

ここで実際の問題をより明確に説明する必要があると思います。原因、コードは私にとってはうまくいくようです。

ところで、コンボ ボックスのデータ項目を設定するためのループは実際には必要ありません。DataSourceコンボのプロパティを、データを抽出した DataTable に割り当てるだけです。

ProductsComboBox.DataSource = dt...問題なく動作します。
次に、DisplayMemberValueMemberをそれぞれの列に設定できます。

于 2012-07-29T16:02:03.877 に答える