2010-07-18 2 views
1

ASP.NET의 경우 레코드 삽입 및 편집을 위해 DetailsView를 사용하고 있습니다. 편집 모드의 경우 기본 키 필드를 변경하면 안되기 때문에 표시하지 않으려합니다. 삽입 모드의 경우 기본 키 필드가 존재하지 않기 때문에 사용자가 고유 한 값을 선택할 수 있도록하는 DropDownList를 통해 기본 키 필드를 지정할 수 있습니다. TemplateField는 기본 키 필드의 DetailsView 마크 업에서 사용됩니다 (따라서 삽입 모드의 경우 DropDownList).ASP.NET Details 편집 화면의 필드 표시 변경 삽입 모드

제 문제는 기본 키 필드를 편집 모드로 표시하지 않고 삽입 모드로 표시 할 수 없다는 것입니다. 마크 업에서 내가 가진 :와

<asp:TemplateField HeaderText="name" InsertVisible="True" Visible="True"> 
    <InsertItemTemplate> 
     <asp:DropDownList ID="ddl2NonMembers" runat="server" 
      Width="155px" 
      Sourceless="sqlNonMembers" 
      DataTextField="name" 
      DataValueField="id_adm" 
      SelectedValue='<%# Bind("member_grp") %>'> 
     </asp:DropDownList> 
    </InsertItemTemplate> 
</asp:TemplateField> 

를 TemplateField 표시 =의 HeaderText에 = "이름이"항상 내가 편집 모드 원하지 않는 표시 "참". TemplateField Visible = "False"로 설정하면 입력 모드에 대해 원하지 않는 필드는 표시되지 않습니다.

삽입 절 편집 모드에서 원하는 표시 동작을 어떻게 달성 할 수 있습니까? 나는 순수한 마크 업 방식에 의존하기보다는 프로그래밍 방식으로 일부 속성을 변경하는 것이 좋지만 솔루션을 파악할 수는 없습니다.

알려 주시기 바랍니다.

답변

1

세부보기 모드를 테스트하고 그것이 편집 모드인지 확인할 수 있습니다. 그런 다음 DropDownList를 프로그래밍 방식으로 숨길 수 있습니다.

if (myDetailsView.CurrentMode == DetailsViewMode.Edit) 
{ 
    DropDownList ddl2NonMembers = (DropDownList)myDetailsView.FindControl("ddl2NonMembers"); 
    ddl2NonMembers.Visible = false; 
} 

또한 전체 열을 숨길 수 있지만 해당 열의 색인을 알아야합니다.

if (myDetailsView.CurrentMode == DetailsViewMode.Edit) 
{ 
    myDetailsView.Columns[5].Visible = false; 
} 

그리고 마지막으로, 당신은 위해 DetailsView의 현재 값을 확인 코드 숨김에서 함수를 작성하고 템플릿 필드의 Visible 속성에 할당 할 수 있습니다 : 가정 열 인덱스는 같은 뭔가를 할 수 # 5 :

public bool showPKField() { 
    bool result = true; 
    if(myDetailsView.CurrentMode == DetailsViewMode.Edit) 
     result = false; 
    return result; 
} 

그리고 당신의 템플릿 필드를 내부

는 :

<asp:TemplateField HeaderText="name" InsertVisible="True" Visible='<%# showPKField() %>'> 
+0

나는 전체 열을 표시 할 수 있는지 여부를 전환하는 데 필요한, 그래서 두 번째 옵션으로 갔다, 그러나 나는 myDetailsView.Fiel를 사용했다 ds [5] .Visible = false (TemplateField는 태그 안에 있고, 은 GridView 용임). – harrije

+0

죄송합니다. VS에서 테스트하지 않았습니다. 그렇습니다. Fields 컬렉션입니다. 내 나쁜 :) – Marko

+0

나는 InsertVisible 속성에 대해 몰랐다. 이것은 나를 위해 일했고, 나는 거짓으로 바꿨다. +1 – Brabbeldas