0

私はここでは新人です。そして、大きな問題がありました。ご協力いただければ幸いです。

アクセスファイルにデータを入力し、フィルタリング後に取得するソフトウェアを開発しています(日時ピッカー、ラジオボタン、コンボボックスなどを使用して行われます)

エントリを更新したい場合は、選択クエリを記述し、それらの値を関連するフィールドに追加するだけです。しかし、コンボボックスを更新できないということです。私はそれらのうちの2つを手に入れました。次のコードを試してみると、エラーがスローされます。

私に何ができる?助けてください。ありがとう!

cmb_district.ValueMember = dt1.Rows[0][1].ToString();

データ ソース プロパティを使用して、コンボ ボックスを Access データベースに接続します。明らかに表示メンバーと値メンバーがあります。しかし、クエリが値を返すと、コンボボックスは更新されず、次のエラーが発生します。

新しい値メンバーにバインドできません。パラメータ名: 値

ありがとう。助けてください!

4

3 に答える 3

0

指定したコード行が正しくありません。ValueMemberコンボボックスのは、選択したオブジェクトの値にしたいプロパティまたは列の名前に設定する必要があります(たとえば、一意のID)。しかし、あなたはフィールドの内容で埋めています。ValueMember

この方法でコンボボックスをバインドすると(との組み合わせでデータソースを設定DisplayMemberValueMember、コンボボックスのプロパティは選択した行のフィールドのSelectedValue値で埋められます。ValueMember

たとえば、ActorIDNameBirthDateの各列にデータが含まれるDataTableがあるとします。

DataTable dt = new DataTable();
dt.Columns.Add("ActorID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("BirthDate", typeof(DateTime));


dt.Rows.Add(1, "Will Smith", new DateTime(1968,9,25));
dt.Rows.Add(2, "Bruce Willis", new DateTime(1955,3,19));
dt.Rows.Add(3, "Jim Carrey", new DateTime(1962, 1, 17));
dt.Rows.Add(18, "Nicole Kidman", new DateTime(1967,6,20));

ComboBox cb = new ComboBox();
cb.DropDownStyle = ComboBoxStyle.DropDownList;
cb.Location = new Point(20, 100);
cb.Width = 100;

cb.DisplayMember = "Name";  // *****
cb.ValueMember = "ActorID"; // ***** The important part
cb.DataSource = dt;

Button btn = new Button();
btn.Text = "Show ID";
btn.Location = new Point(10, 140);
btn.Click += (sender, e) =>
    {
        MessageBox.Show(cb.SelectedValue.ToString()); // **** The other important part.
    };

Form f = new Form();
f.Controls.Add(cb);
f.Controls.Add(btn);

f.ShowDialog();

コンボボックスのを読み取るSelectedValueと、選択した行の「ActorID」が取得されます。

于 2012-05-09T07:51:27.090 に答える
0

yiuがバインド後に特定の値を選択する場合は、次を使用します。

cmb_district.SelectedValue = dt1.Rows[0][1].ToString(); 
于 2012-05-09T08:04:57.017 に答える
0

こんな感じです

cmb_district.DataSource = dt1;
cmb_district.ValueMember = "SNO"; 
cmb_district.DisplayMember = "Name";
// where SNO and Name are column names in dt1.
于 2012-05-08T05:52:59.567 に答える