2

エンティティフレームワークデータベースを使用していて、テーブルからドロップダウンリストに正しい順序でデータを入力したいと考えています。

現在、私はコードを使用しています:

var databaseList = from p in db.TECHNICAL_SKILLS
                   where p.skill_type == "Database"
                   select new EmployeeTechnicalSkillInfo
                       {
                           TechnicalSkillId = p.technical_skill_id,
                           SkillType = p.skill_type,
                           SkillName = p.skill_name
                       };

        List<object> sDataValue = new List<object>();
        sDataValue.Add("- Select -");
        sDataValue.Remove("Other");

        foreach (var vData in databaseList)
        {
            sDataValue.Add(vData.SkillName);
        }

        sDataValue.Add("Other");

        DropDownListDB.DataSource = sDataValue.ToArray();
        DropDownListDB.DataBind(); 

これが解決策です

    var databaseList = from p in db.TECHNICAL_SKILLS
           where p.skill_type == "Database"
           orderby p.skill_name != "Other" descending, p.skill_name
           select new EmployeeTechnicalSkillInfo
               {
                   TechnicalSkillId = p.technical_skill_id,
                   SkillType = p.skill_type,
                   SkillName = p.skill_name
               };
4

4 に答える 4

3

リストからエントリを削除し、最初の項目として:-Select-に追加します。List<object>

List<object> sDataValue = new List<object>();
sDataValue.Add("-Select-");
foreach (var vData in databaseList){}

最も簡単な方法だと思います。

編集

その後if/else、多分とを使用します

foreach (var vData in databaseList){} //fill your list
sDataValue.Add("-Other-");
于 2013-03-27T10:10:31.933 に答える
1

これを行うだけです:

次のようにdatabaseListから削除-Select-Otherます。

var databaseList = from p in db.TECHNICAL_SKILLS
                   where p.skill_type == "Database"
                     && p.skill_name.ToLower() !="other"
                     && p.skill_name.ToLower() !="-select-"

                   select new EmployeeTechnicalSkillInfo
                       {
                           TechnicalSkillId = p.technical_skill_id,
                           SkillType = p.skill_type,
                           SkillName = p.skill_name
                       };

そしてこれを行います:

DropDownListDB.DataSource = sDataValue.ToArray().OrderBy(s=>s);
DropDownListDB.Items.Insert(0, "-Select-");
DropDownListDB.Items.Add("Other");

データベースから-Select-およびOtherフィールドを取得する必要がある場合は、それらをDropDownListにバインドしてから削除し、適切な場所に再度挿入するのは少し費用がかかります。

データベースからこれらの2つの行を選択しないでください。それはより効率的になります。

于 2013-03-27T10:13:25.510 に答える
1

データベースに「セクションID」を追加できます。「-Select-」の場合は0、「Other」の場合は2、残りの場合は1です。次に、1)セクションID、2)名前で並べ替えます。

ただし、その「-Select-」をまったく保存せず(有効な値を表すものではありません)、データバインド後の正しい場所に追加することをお勧めします。

于 2013-03-27T10:16:36.183 に答える
0

ブール値を使用してorderbyで遊ぶことができます

orderby p.skill_name != "Other" descending, p.skill_name

あなたのコードで=>

var databaseList = from p in db.TECHNICAL_SKILLS
               where p.skill_type == "Database"
               orderby p.skill_name != "Other" descending, p.skill_name
               select new EmployeeTechnicalSkillInfo
                   {
                       TechnicalSkillId = p.technical_skill_id,
                       SkillType = p.skill_type,
                       SkillName = p.skill_name
                   };

    List<object> sDataValue = new List<object>();
    sDataValue.Add("- Select -");

    foreach (var vData in databaseList)
    {
        sDataValue.Add(vData.SkillName);
    }

    DropDownListDB.DataSource = sDataValue.ToArray();
    DropDownListDB.DataBind(); 
于 2013-03-27T10:38:07.280 に答える