1

リスト ボックスの選択した項目の値を取得するにはどうすればよいですか?

私はこのようなことを試しました:

            foreach (var item in combo_course_op.SelectedItems)
            {
                string s = "select cid from tms_course where course_title = '" + item.ToString() + "'";
            }

しかし、機能しません..文字列が「tms_courseからcidを選択してください。ここでcourse_title = 'System.Data.DataRowView'」と表示されます

私はどこで間違っていますか?

これは私がデータバインドした方法です:

MyCommand = new OdbcCommand("select distinct module_name from tms_class_schedule where class_date ='"+selectedDate+"'", DBConnect.MyConnection);
            dap = new OdbcDataAdapter(MyCommand);
            DS = new DataSet();
            dap.SelectCommand = MyCommand;
            dap.Fill(DS);
            combo_course_op.DataContext = DS.Tables[0].DefaultView;
            combo_course_op.DisplayMemberPath = DS.Tables[0].Columns["module_name"].ToString();
4

4 に答える 4

2

明らかに、リストボックスはいくつかのデータソースにバインドされています。つまり、リストボックス内の項目は文字列ではなく、。のインスタンスですDataRowView。次のように、基になるデータオブジェクトをキャストして取得できます。

DataRowView drv = (DataRowView)item;
<TheRealType> itemOfMyType = (<TheRealType>)drv.Row;

ここ<TheRealType>で、はリストボックスにバインドされているアイテムの実際のデータ型です。

于 2012-11-26T12:29:44.453 に答える
1

あなたのコードでは、DisplayMemberPath は Columns["module_name"] に設定されています

これから推測すると、次のように動作するはずです。

foreach (var item in combo_course_op.SelectedItems)
{
   string s = "select cid from tms_course where course_title = '" + item["module_name"].ToString() + "'";
}

選択した項目は DataRow であるため、値を返すには正しい列を取得する必要があります。

于 2012-11-28T19:41:29.410 に答える
1
foreach (var item in combo_course_op.SelectedItems)
{
    string s = "select cid from tms_course where course_title = '" 
             + (item["Title"] as string) + "'"; // if Title is column name. Otherwise replace "Title" with actual column header name
}
于 2012-11-26T12:31:41.807 に答える
-1

Itemあなたはその実際のタイプでキャストすることができます:

        foreach (var item in combo_course_op.SelectedItems)
        {
            string s = "select cid from tms_course where course_title = '" +
               ((Course)item).Title + "'";
        }

Course.ToStringまたは、タイトルを返すようにオーバーライドします。

編集(について気づいた後DataRowView

DataRowViewsをWPFComboBoxに配置することは、本当に悪いIDのように見えます。たぶん、WPFとMVVMに関するチュートリアルを1つか2つ読む必要があります。

于 2012-11-26T12:28:24.520 に答える