2011-08-10 2 views
0

リストボックスに値を設定したいので、ListBoxItemの配列を定義する必要があります。 データはデータベースに格納されます。ASP.NET:データベースの値からListBoxItemsを生成する

これは私の元のメソッドです:

public IEnumerable<String> GiveStudentsNormalAsString(int lesson, int class) 
    { 
     Lesson l = giveLesson(lesson); 
     Class c = GiveClass(l, class); 
     return (from s in c.Students 
       orderby s.Name, s.FirstName 
       select s.Name); 
    } 

だから、「クラス」生徒(ナビゲーションプロパティ)のリストが含まれています。 私がしたいことは、IEnumerableのStringsではなくSelectListItemsのIEnumerableを返すことです。

は、私はすでに開始:

public IEnumerable<SelectListItem> GiveStudentsNormalAsString(int lesson, int class) 
    { 
     Lesson l = giveLesson(lesson); 
     Class c = GiveClass(l, class); 
     return .Select(student => new SelectListItem 
     { 
      Text = ... 
      Value = ... 
     }; 
    } 

しかし、私は、テキストと値として記述する必要がありますか?たとえば、Student Numberの値をValueとしたいのですが、どうすればいいですか?ここで

は私のEDMXです: EDMX 1

答えて

0

SelectListItemを構築するときにあなただけstudent変数を参照してください。もちろん

public IEnumerable<SelectListItem> GiveStudentsNormalAsString(int lesson, int class) 
{ 
    Lesson l = giveLesson(lesson); 
    Class c = GiveClass(l, class); 
    return c.Students.Select(student => new SelectListItem 
    { 
     Text = student.Name, 
     Value = student.Number.ToString() 
    }); 
} 

をあなたはとても好むなら、それはまた、LINQの構文を使用して書き込むことができます:

public IEnumerable<SelectListItem> GiveStudentsNormalAsString(int lesson, int class) 
{ 
    Lesson l = giveLesson(lesson); 
    Class c = GiveClass(l, class); 
    return (from student in c.Students 
      select new SelectListItem 
      { 
       Text = student.Name, 
       Value = student.Number.ToString() 
      }); 
} 
+0

ありがとうございました! – Lorenzo

+0

私は質問があります:Value = student.StudentIDを入力すると、intからstringに変換できないというエラーが表示されます... – Lorenzo

+0

@Laurentこれは、 'SelectListItem.Value'が' string'であるためです'student.StudentID'を文字列に変換する必要があります。それに応じてコードを更新しました。 – twoflower

関連する問題