2

私は C#.net Windows アプリケーションに取り組んでいます。以下を使用して、winform のコンボボックスに入力しています。

cmbEMPType.DataSource = objEntityManager.EmployeeTypes();
cmbEMPType.DisplayMember = "EMPTypeName";
cmbEMPType.ValueMember = "EMPTypeId";

objEntityManager.EmployeeTypes();LinqからSQLサーバーへのリストを取得するマネージャーメソッドのどこにあります。これはうまくいっています。

しかし、アイテムフォームコンボボックスを選択してボタンをクリックすると、ボタンクリックイベントでIDではなく戻り値の型cmbEMPType.SelectedValueとして取得されます。EmpTypeなぜこれが必要なのですか?EmpType オブジェクトをもう 1 つ作成したくありません。単純な選択値が必要です。また、SelectedIndex を信頼することもできません。アイテムごとに異なる場合があります。

**Edited**
      public List<EMPType> EmployeeTypes()
        {
            List<EMPType> EMPTypeList = null;
            try
            {
                if (CommonDataObject.dataContext.EMPAllTypes.Any())
                {
                    EMPTypeList = CommonDataObject.dataContext.EMPAllTypes.ToList();
                }
                return EMPTypeList;
            }
            catch
            {

                return EMPTypeList;
            }

        }

編集済み

   private void btnSave_Click(object sender, EventArgs e)
        {

iEMPTypeId = cmbEMPType.SelectedValue;
}

ここで、インテルを取得する必要があります。しかし、EMPType オブジェクトの作成を求めています。

4

3 に答える 3

1

問題は、コードのシーケンスです。最初の行のコードを最後の行まで削除してください。からint 値 ( iEMPTypeId)を取得しcmbEMPType.SelectedValueます。

cmbEMPType.DisplayMember = "EMPTypeName"; 
cmbEMPType.ValueMember = "EMPTypeId"; 
cmbEMPType.DataSource = objEntityManager.EmployeeTypes();

iEMPTypeId = cmbEMPType.SelectedValue
于 2011-07-08T13:02:28.713 に答える
1

これは正しい動作であり、変更することはできません。

SelectedValueプロパティのタイプを返す必要があります。たとえば、EMPTypeId が整数の場合、整数を返す必要があります。別の戻り値が得られる理由を突き止められるように、さらにコードを投稿してください。

万が一、使用している場合はSelectedItem、ID を取得するためのコードを用意してください。

 int selectedID = (cmbEMPType.SelectedItem as EmpType).EMPTypeId;

何も選択されていない場合に対処するには:

object oSelectedEmp = cmbEMPType.SelectedItem;
int selectedID = oSelectedEmp == null ? -1 : (oSelectedEmp as EmpType).EMPTypeId;
于 2011-02-14T12:38:51.590 に答える
0

もう 1 つのオプションは、EMPType クラスで toString 関数をオーバーライドすることです。Edwin de Koning が述べたように、「ValueMember が指定されていない場合は、ToString() 表現が提供されます」。

次のようなもの(現時点ではテストできません):

public override string ToString()
{
    return this.ID;
}

この記事をチェックできます: http://msdn.microsoft.com/en-us/library/ms173154(v=vs.80).aspx

于 2011-07-08T16:18:41.893 に答える