我有一个下拉列表,该列表从数据库中的类别按程序生成“护理项目”,但是当禁用护理项目(或其类别)时,我希望在末尾使用--Disabled--类别标记我的下拉列表中,然后填充了禁用的内容。
DropDownBox
-饮食
---用餐援助
---送餐
-卫生
---沐浴帮助
---洗衣
-----------已禁用------------
-饮食
---膳食准备
-医学
---餐前药丸管理
ETC ETC
aspx:
<label>Care Item:</label>
<asp:ObjectDataSource ID="odsCareItems" runat="server" OnObjectCreating="odsBocaView_ObjectCreating" SelectMethod="GetCareItems" TypeName="Boca.DataView.CareData.CareConfigurationView">
<SelectParameters>
<asp:ControlParameter Name="facilityId" ControlID="lstFacility" Type="Int64" />
<asp:ControlParameter Name="careProgramId" ControlID="lstCareProgram" Type="Int64" />
<asp:Parameter Name="includeDisabled" Type="Boolean" DefaultValue="False" />
</SelectParameters>
</asp:ObjectDataSource>
<qs:extendeddropdownlist id="lstCareItems" runat="server" datasourceid="odsCareItems" skinid="large" datatextfield="Name" datavaluefield="ID" datagroupfield="Category" ondatabound="OnCareItemFilterDataBound" />
还有CS:
public List<CareItemView> GetCareItems(long facilityId, long careProgramId, bool includeDisabled = true)
{
if (facilityId > 0 && SecurityContext.RestrictedFacilityIds != null && !SecurityContext.RestrictedFacilityIds.Contains(facilityId))
{
return null;
}
var query = CareItemFactory.Instance.GetByCareProgram(facilityId, careProgramId);
if (!includeDisabled)
{
query = query.Where(x => !x.IsDisabled && !x.CareItemCategory.IsDisabled);
}
return query.Select(i => new CareItemView
{
ID = i.ID,
Category = i.CareItemCategory.Name,
Name = i.Name
}).ToList();
}
在Webforms中执行此操作的最佳方法是什么?我可以在查询中完成此操作吗?是的,我知道这是哪一年,该死的网络表格。
答案 0 :(得分:0)
您可以以编程方式在给定索引处添加ListItem。
DropDownList1.Items.Insert(5, new ListItem() { Text = "--- Disabled ---", Value = "" });
唯一的问题是,这是在后面的代码中完成的。但是您的来源在aspx上。因此,为了使其正常工作,您需要在插入之前将源数据绑定到后面的代码中。
您还可以将项目插入GetCareItems
方法中。那将是最简单的。
YourList.Insert(5, new CareItemView() { Name = "--- Disabled ---" } );