0

C# Windows フォーム プロジェクトでのデータ バインディングに関する問題に直面しています。.Net Framework 4 クライアント プロファイルを使用しました。IDE は C# 用の Visual Studio 2010 Express Edition です。私は以下のようなクラスを持っています。

public myClass()
    {
        name = string.Empty;
        dataType = DataTypes.Bool;  //property with enum created by me
        isList = false;
        filterValue = new object();
    }

次に、profile.csv ファイルがあります。私のフォームの1つにコンボボックスがあり、そのデータソースはcsvファイルからのデータを含むデータテーブルです。

private void form_load()
{
 ComboBox comboBox = new ComboBox();
 this.Controls.Add(comboBox);
 comboBox.Name = attribute.Name.Replace(" ", string.Empty);
 comboBox.DisplayMember = attribute.Name;
 comboBox.DataSource = attributeValueDataSource.Tables[tableName].DefaultView;
 comboBox.SelectedIndex = 0;
}

次に、このコンボ ボックスで自分のクラスにデータ バインディングを行います。私のデータバインディングは上記とは異なる別の方法であり、コンボボックスは動的に作成されるため、以下の方法でその名前でコンボボックスを見つけました。

private void Method_1
{
control = this.Controls.Find(attrName, true); 
ComboBox specificControl = (ComboBox)control[0]; Binding attributeBinding = 
new Binding(SelectedValue, attributeSelectionController.FilterAttributeModels[attributeCount] , FilterValue, true, DataSourceUpdateMode.OnPropertyChanged, string.Empty, F); 
attributeBinding.ControlUpdateMode =   ControlUpdateMode.OnPropertyChanged;   specificControl.DataBindings.Add(attributeBinding);
 }

その状態までは大丈夫そうです。ただし、バインド イベント呼び出しとプログラム フローが set プロパティ メソッドに進むと、value.GetType() は、文字列、整数、またはその他のデータ型ではなく、コンボ ボックス項目の selectedValue の型として system.data.datarowview を返します。データソースをそれに設定しているときに、コンボックスの値メンバーを設定しようとしました。しかし、助けはありません。誰でもそれを助けることができますか?緊急の解決策が必要です。

4

1 に答える 1

1

最後に問題を理解することができます。フォームロード方式で、以下の行の順番を入れ替えました。

comboBox.DisplayMember = attribute.Name; 
comboBox.DataSource = attributeValueDataSource.Tables[tableName].DefaultView;

なので

comboBox.DataSource = attributeValueDataSource.Tables[tableName].DefaultView;
comboBox.DisplayMember = attribute.Name;
combox.ValueMember = attribute.Name;

その後、動作します。:)

**私を助けてくれた友人に感謝します。

于 2013-04-18T13:54:27.067 に答える