1

下午所有,ASP.Net詳細信息列表'編輯'功能

我習慣了使用gridviews但我第一次使用了詳細信息視圖。我正在使用VB代碼使用Visual Studio 2010。

我有一個網格視圖,顯示來自數據庫表的項目,並使用'ShowSelectButton =「true」'功能使用戶能夠選擇這些單獨的項目並在詳細信息視圖中顯示完整信息。

上述工作正常。我唯一的問題是我的數據綁定到數據源和關聯的數據庫。在其中一列上,我希望使用戶能夠以下拉列表的形式選擇一個項目(操作狀態和更新 - 正在進行中,正在進行中&已完成),然後進行更新。

我不太起訴如何完成此?這裏是我的代碼詳細視圖....

 <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

您想要使用Templatefield而不是BoundField作爲「ActionStatus」來完成此操作。

您可以使用設計到外地轉換爲TemplateField如下:

  • 展開的灰色箭頭在你DetailsView(我不記得它叫什麼)拐角處,然後
  • 點擊「編輯字段」。
  • 在「選定的字段」框中,單擊您想要更改的字段(在您的情況下爲「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> 

您還需要確保您的數據源有一個「更新命令」,以配置的更新才能正常工作。

+0

非常感謝這些信息。我已經設法添加額外的項目,現在這是一種享受。 – Betty

+0

很高興能幫到你! – jadarnel27

1

添加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> 

在後面的代碼使用find方法來獲取和設置您的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