コンボボックスコントロールに問題があります。アイテムはデータベースから取得されますが、SelectedValueプロパティでアクセスすることはできません。データバインドされたコンボボックスにアクセスするC#
私はこのようにそれを設定してみました:
DataSet ds = retrieveData(); //I am calling a procedure, it works fine
myComboBox.DataSource = ds;
myComboBox.DisplayMember = "COLUMN1";
myComboBox.ValueMember= "COLUMN2";
しかし、それは動作しません。
foreach (DataRow dr in ds.Tables[0].Rows)
{
myComboBox.Items.Add(
new { TEXT = dr["COLUMN1"].ToString(),
VALUE = Convert.ToInt32(dr["COLUMN2"].ToString())
});
}
今では動作します:コンボボックス内のテキストは、だから私はこれをしなかった
System.Data.DataViewManagerListItemTypeDescriptor
ました。しかし、私はインデックス(myComboBox.IndexOf("Text inside")
)にアクセスする必要があります(プライマリキーであるため、一意であることが保証されています)。 SelectedValueは常にnullで、SelectedIndexは私がアクセスできないフィールドの匿名オブジェクトです!助けが必要ですか?
最初の例がうまくいかない理由を知りたいと思っています。 DataSourceがバインドされていないため、2番目のメソッドはSelectedValueを使用できません。 @stackoverflow.com/questions/14379183/combobox-selectedvalue-throws-null-reference-exception – Steve
@Steveも参照してください。ボックスのテキストは次のとおりです。 'System.Data.DataViewManagerListItemTypeDescriptor' – dzenesiz