1

フォームにcombobox電話があります。ddCoursesLINQ 式でロードしようとしていますが、プログラムを実行するcomboboxと、テキストだけではなく、LINQ ステートメントでロードした値 (COURSE_ID) とテキスト (COURSE_TITLE) が表示されます (値が必要です)。 、COURSE_ID、非表示)。

これが私のコードです:

    private void LoadDropDowns()
    {
        var db = new DataClasses1DataContext();
        ddCourse.DataSource = (from c in db.COURSE_MASTERs
                               select new { c.COURSE_ID, c.COURSE_TITLE }).ToList();
    }

の各行の値とテキストを設定するにはどうすればよいcomboboxですか?

私が見た他の例ではDataTextFieldandDataValueFieldプロパティが使用されていましたが、これらは私には利用できないようです。

およびプロパティ usingにアクセスできるようにするための参照がステートメントにありませんか?DataTextFieldDataValueField

これが私の「使用」ステートメントです:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

編集: DataTextField および DataValueField プロパティは利用できません。これは System.Web.UI の一部であり、これは私が使用している winform であるためですか?

4

4 に答える 4

5

最初にDisplayMemberとを設定する必要があります。ValueMember

var db = new DataClasses1DataContext();
ddCourse.DisplayMember = "COURSE_TITLE";
ddCourse.ValueMember = "COURSE_ID";
ddCourse.DataSource = (from c in db.COURSE_MASTERs
                        select new { c.COURSE_ID, c.COURSE_TITLE }).ToList();
于 2013-09-18T19:27:45.340 に答える
1

匿名型を返す代わりに、必要なプロパティを含むクエリからクラスを返すことができます。次に、このクラスの ToString() メソッドをオーバーライドし、目的のプロパティを ToString() メソッドで返します。ToString() メソッドの結果がコンボボックスに表示されます。

ここでサンプルコードブ​​ロックがうまくいきました。

    public class ComboItem
        {
            public string Text { get; set; }
            public string Value { get; set; }

            public override string ToString()
            {
                return Text;
            }
        }

  private void Form1_Load(object sender, EventArgs e)
        {
            List<ComboItem> itemList = new List<ComboItem>()
            {
                new ComboItem() { Text="A", Value="1"},
                new ComboItem() { Text="B", Value="2"},
                new ComboItem() { Text="C", Value="3"},
                new ComboItem() { Text="D", Value="4"},
                new ComboItem() { Text="E", Value="5"}
            };

            comboBox1.DataSource = itemList;
        }

また、以下のコードで selectedItem の値を取得できます。

 string selectedVal = (comboBox1.SelectedItem as ComboItem).Value;
于 2013-09-18T19:35:08.877 に答える
1

表示メンバーと値メンバーが必要です。

ddCourse.DataSource = (from c in db.COURSE_MASTERs 
                       select new {course_id = c.COURSE_ID, course_title = c.COURSE_TITLE }).ToList();
comboBox.DisplayMember="course_title";
comboBox.ValueMember="course_id ";
于 2013-09-18T19:28:43.887 に答える