2012-02-14 16 views
1

私のasp.net Webアプリケーションでは、次の詳細ビューがあります。表示される内容は、編集リンクを含む文字列です。編集リンクが選択されると、文字列はいくつかのオプションが設定されたドロップダウンリストに変わります。列挙にデータがないときたDetailsViewは、あなたは何をDetailsViewで表示したい場合はEmptyDataTemplateを追加する必要があります...(いなくても編集リンク)詳細ビューコントロールが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

を表示されないときにそのデータソース空です:

<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などを置くことができます。

関連する問題