1

오후 모두ASP.Net 세부 정보 '편집'기능

저는 gridviews를 사용하는 데 익숙하지만 처음으로 세부 정보보기를 사용하고 있습니다. VB 코드로 Visual Studio 2010을 사용하고 있습니다.

데이터베이스 테이블의 항목을 표시하고 'ShowSelectButton = "true"'함수를 사용하여 사용자가 이러한 개별 항목을 선택하고 세부 정보보기에서 전체 정보를 표시 할 수 있도록하는 격자보기가 있습니다.

위의 동작이 정상입니다. 유일한 문제는 내 데이터가 데이터 소스와 연결된 데이터베이스에 바인딩되어 있다는 것입니다. 이 열 중 하나에서 사용자가 드롭 다운 목록 형태로 항목 (작업 상태 및 업데이트 - Outstaning, 진행 중 & 완료)을 선택한 다음 업데이트 할 수있게하려고합니다.

이 작업을 완료하는 방법은 무엇입니까? 자세히보기에 대한 내 코드는 다음과 같습니다 ....

 <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="400px" 
      AutoGenerateRows="False" 
      DataKeyNames="ActionID" DataSourceID="dsDetailsView" 
      AutoGenerateEditButton="True" CssClass="mGrid" PagerStyle-CssClass="pgr" 
      AlternatingRowStyle-CssClass="alt" HorizontalAlign="Center" 
      CellPadding="5" > 
     <AlternatingRowStyle CssClass="alt"></AlternatingRowStyle> 
     <Fields> 

      <asp:BoundField DataField="AgendaID" HeaderText="Agenda Ref:" 
      SortExpression="AgendaID" ReadOnly="true"> 
      <HeaderStyle Font-Bold="True" Font-Names="Ariel" /> 
      </asp:BoundField> 

      <asp:BoundField DataField="ActionID" HeaderText="Action ID:" 
      InsertVisible="False" ReadOnly="True" SortExpression="ActionID" 
      ItemStyle-Width="500px" > 
      <HeaderStyle Font-Bold="True" /> 
      <ItemStyle Width="500px" Font-Bold="True"></ItemStyle> 
      </asp:BoundField> 

      <asp:BoundField DataField="Action" HeaderText="Action:" 
      SortExpression="Action" ReadOnly="true"> 
      <HeaderStyle Font-Bold="True" /> 
      <ItemStyle Wrap="True" /> 
      </asp:BoundField> 

      <asp:BoundField DataField="Owner" HeaderText="Owner:" 
      SortExpression="Owner" ReadOnly="true"> 
      <HeaderStyle Font-Bold="True" Wrap="False" /> 
      <ItemStyle Wrap="False" /> 
      </asp:BoundField> 

      <asp:BoundField DataField="TargetDate" HeaderText="Target Date:" 
      SortExpression="TargetDate" ReadOnly="true" 
      DataFormatString="{0:dd-MM-yyyy} " > 
      <HeaderStyle Font-Bold="True" Wrap="True" /> 
      <ItemStyle Font-Bold="False" /> 
      </asp:BoundField> 

      <asp:BoundField DataField="DateCreated" HeaderText="Date Created:" 
      SortExpression="DateCreated" ReadOnly="true" 
      DataFormatString="{0:dd-MM-yyyy} " > 
      <HeaderStyle Font-Bold="True" Wrap="False" /> 
      </asp:BoundField> 

      <asp:BoundField DataField="ActionUpdate" HeaderText="Action Update:" 
      SortExpression="ActionUpdate" 
      NullDisplayText="Select 'Edit' to update Action..." > 
      <HeaderStyle Font-Bold="True" Wrap="False" /> 
      </asp:BoundField> 

      <asp:BoundField DataField="ActionStatus" HeaderText="Action Status:" 
      SortExpression="ActionStatus" ReadOnly="true" > 
      <HeaderStyle Font-Bold="True" Wrap="False" /> 
      </asp:BoundField> 

      <asp:BoundField DataField="ActionStatusID" HeaderText="Action Status ID:" 
      SortExpression="ActionStatusID" ReadOnly="true" Visible="true"> 
      <HeaderStyle Font-Bold="True" Wrap="False" /> 
      </asp:BoundField> 

    </Fields> 
     <PagerStyle CssClass="pgr" /> 
</asp:DetailsView> 

사전 도움이 필요합니다.

감사 베티

답변

1

이렇게하려면 "ActionStatus"에 BoundField 대신 Templatefield을 사용하고 싶습니다.

  • DetailsView (나는이 기억 나지 않으)의 모서리에있는 회색 화살표를 확장 한 다음
  • 을 다음과 같이

    당신은 TemplateField에 필드를 변환하는 디자이너를 사용할 수 있습니다 "Edit Fields"를 클릭하십시오.

  • "선택한 필드"상자에서 변경하려는 필드 (귀하의 경우 "ActionStatus")를 클릭하십시오. 윈도우의 오른쪽 아래 부분에
  • ,

그런 다음 당신은 당신의 마크 업 (소스보기)로 이동합니다 "는 TemplateField에이 필드를 변환"라는 링크를 클릭하고 <EditItemTemplate> 변경 섹션에는 DropDownList이 있습니다. 이처럼 :

<asp:TemplateField HeaderText="ActionStatus" 
    SortExpression="ActionStatus"> 
    <EditItemTemplate> 
     <asp:DropdownList ID="actionStatusDDL" runat="server"> 
      <asp:ListItem Text="Outstanding" Value="Outstanding"></asp:ListItem> 
      <asp:ListItem Text="In Progress" Value="In Progress"></asp:ListItem> 
      <asp:ListItem Text="Completed" Value="Completed"></asp:ListItem> 
     </asp:DropdownList> 
    </EditItemTemplate> 

또한 데이터 소스 업데이트가 제대로 작동하기 위해서는 구성된 "UpdateCommand"을 가지고 있는지 확인해야합니다.

+0

이 정보에 대해 감사드립니다. 나는 여분의 항목을 추가 할 수 있었고 이제는 치료법을 사용할 수 있습니다. – Betty

+0

기꺼이 도와 드리겠습니다! – jadarnel27

1

가 TemplateField에서 DDL을 추가하고 뒤에 코드에 액세스 :

: 코드

  <asp:TemplateField HeaderText="Action Status list:"> 
      <ItemTemplate> 
       <asp:DropDownList runat="server" ID="ddl_ActionList" DataSource="ActionListDataSource" DataValueField="ActionStatusID" 
        DataTextField="ActionStatus"> 
       </asp:DropDownList> 
      </ItemTemplate> 
     </asp:TemplateField> 

뒤에 도착하고 DDL을 선택 값을 설정 찾기 방법을 사용

Protected Sub DetailsView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles DetailsView1.DataBound 
    Dim ActionLst As DropDownList = DetailsView1.FindControl("ddl_ActionList") 
    'ActionLst.SelectedValue = set the selected value here 
End Sub 

Protected Sub DetailsView1_ItemUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewUpdateEventArgs) Handles DetailsView1.ItemUpdating 
    Dim ActionLst As DropDownList = DetailsView1.FindControl("ddl_ActionList") 
    'ActionLst.SelectedValue = get the selected value here 
End Sub