2012-02-14 1 views
1

asp.net 웹 응용 프로그램에서 다음 detailsview 있습니다. 표시 할 내용은 편집 링크가있는 문자열이며, 편집 링크를 선택하면 문자열이 일부 옵션으로 채워진 드롭 다운 목록으로 바뀝니다. 열거 가능한에 데이터가없는 경우 위해 DetailsView 당신은 당신은 아무것도가 DetailsView에 표시 할 경우 EmptyDataTemplate를 추가 할 필요가 ... (심지어 편집 링크)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

를 표시하지 않는 경우 데이터 소스 비어 :

<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 등을 넣을 수 있습니다.