У меня есть следующее подробное представление в моем веб-приложении asp.net. То, что должно отображаться, - это строка с ссылкой на редактирование внизу, когда выбрана ссылка для редактирования, строка превращается в раскрывающийся список, который заполняется некоторыми параметрами. Когда нет никаких данных в Enumerable DetailsView не отображается (даже не редактировать ссылку) ...Элемент управления DetailsView не отображается после DataBind()
<asp:DetailsView ID="dvAwardType"
runat="server"
AutoGenerateRows="False"
Width="100%"
SkinID="SampleDetailsView"
CssSelectorClass="PrettyDetailsView"
AutoGenerateEditButton="True" DataKeyNames="guidRequirementId"
OnModeChanging="dvAwardType_ModeChanging"
OnItemUpdating="dvAwardType_ItemUpdating">
<FieldHeaderStyle Font-Bold="True" Width="150px" />
<Fields>
<asp:TemplateField HeaderText="Pool Type">
<ItemTemplate>
<%#Eval("strAwardType")%>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlAwardType"
runat="server">
<asp:ListItem Text="" Value="" />
<asp:ListItem Text="Small Business" Value="SB" />
<asp:ListItem Text="Large Business" Value="LB" />
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
protected void Page_Load(object sender, EventArgs e)
{
dvAwardType.DataSource = GetData(RequirementId);
dvAwardType.DataBind();
}
private IEnumerable GetData(Guid guidRequirementId)
{
var data = Requirement.BusinessSize(guidRequirementId)
.Select(o =>
new
{
guidRequirementId = o.guidRequirementId,
strAwardType = (o.strBusinessSize != null) ? TranslateSize(o.strBusinessSize) : ""
}
);
return data;
}
private string TranslateSize(string strSize)
{
string strTranslated = string.Empty;
switch(strSize.Trim())
{
case "SB": strTranslated = "Small Business";
break;
case "LB": strTranslated = "Large Business";
break;
}
return strTranslated;
}