2012-02-14 65 views
1

我在我的asp.net web应用程序中有以下detailsview。它应该显示的是一个带有编辑链接的字符串,当编辑链接被选中时,字符串变成一个下拉列表,其中填充了一些选项。当在可枚举没有数据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; 
} 

回答

1

你需要的,如果你想要的东西在DetailsView显示添加一个EmptyDataTemplate当它的数据源是空的:

<asp:DetailsView ID="dvAwardType" 
    runat="server" 
    AutoGenerateRows="False" 
    Width="100%" 
    SkinID="SampleDetailsView" 
    CssSelectorClass="PrettyDetailsView" 
    AutoGenerateEditButton="True" DataKeyNames="guidRequirementId" 
    OnModeChanging="dvAwardType_ModeChanging" 
    OnItemUpdating="dvAwardType_ItemUpdating"> 
    <EmptyDataTemplate> 
     There is no data to display 
    </EmptyDataTemplate> 

你可以把你喜欢的东西放在那个EmptyDataTemplate里面。我只是包含文字,但您可以放置​​控件,超链接,HTML等。