1

午後全部、

私はグリッドビューを使用することに慣れていますが、初めて詳細ビューを使用しています。VisualStudio2010をVBコードで使用しています。

データベーステーブルのアイテムを表示するグリッドビューがあり、「ShowSelectButton = "true"」関数を使用して、ユーザーがこれらの個々のアイテムを選択し、詳細ビュー内に完全な情報を表示できるようにします。

上記は問題なく動作します。私が抱えている唯一の問題は、私のデータがデータソースと関連するデータベースにバインドされていることです。これらの列の1つで、ユーザーがドロップダウンリストの形式でアイテム([アクションステータス]と[更新]-[進行中]、[進行中]、[完了])を選択して更新できるようにします。

私はこれを完了する方法をあまり訴えませんか?これが詳細ビューの私のコードです...

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

事前の助けは大いにありがたいです。

よろしくベティ

4

2 に答える 2

1

これを実現するには、「ActionStatus」 Templatefieldではなく、を使用します。BoundField

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>

また、更新が正しく機能するためには、データソースに「UpdateCommand」が構成されていることを確認する必要があります。

于 2012-05-29T13:50:25.867 に答える
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>

コード ビハインドでは、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
于 2012-05-29T13:37:16.177 に答える