我正在使用实体框架数据库,我想从表中填充我的下拉列表,但顺序正确。
现在我正在使用代码:
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
};
答案 0 :(得分: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-");
答案 1 :(得分: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 :(得分:1)
您可以在数据库中添加“section id”:0表示“-Select-”,2表示“Other”,1表示其余部分。然后排序1)部分ID,2)名称。
但最好不要存储“-Select-”(它不代表有效值)并将其添加到数据绑定后的正确位置。
答案 3 :(得分:0)
您可以尝试使用布尔值
播放orderbyorderby p.skill_name != "Other" descending, p.skill_name
在您的代码中=&gt;
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();