0

わかりました、私が達成する必要があることについて、非常に簡潔ではありますが詳細な説明をしようと思います。

まず、従業員オブジェクトを持つ LinqToSQL データ コンテキストが定義されています。次に、検証、挿入、更新などを処理する BLL (従業員の一部) を作成しました。次に、Employee オブジェクトの選択/更新/挿入メソッドにバインドするオブジェクト データ ソースを含む詳細ビューを作成しました。これも良いことです.1つの問題を除いて、データは本来あるべきようにプルされ、更新され、挿入されます. 詳細ビュー内のドロップダウン リストに問題があります。これらは必須フィールドで、null にすることはできません。その制約が削除されると、コードは正常に機能します。

詳細ビューのコード スニペット - 関連情報を示すために省略されたフィールド。

<asp:DetailsView ID="grd_empDetails"  runat="server" DataSourceID="empDataSource" DataKeyNames="EmployeeID" DefaultMode="Insert" AutoGenerateRows="false">
            <Fields>
                <asp:BoundField HeaderText="First Name" DataField="FirstName" />
                <asp:TemplateField HeaderText="Type of Employee">
                    <ItemTemplate>
                        <asp:DropDownList ID="empType" runat="server" DataValueField="empType" AppendDataBoundItems="true">
                            <asp:ListItem Text="Full Time" Value="1" />
                            <asp:ListItem Text="Part Time" Value="2" />
                            <asp:ListItem Text="Subcontractor or 1099" Value="3" />
                            <asp:ListItem Text="Intern" Value="4" />
                        </asp:DropDownList>
                    </ItemTemplate>                   
                </asp:TemplateField>
                <asp:CommandField ShowInsertButton="true" ShowCancelButton="true" />    
            </Fields>
        </asp:DetailsView>

insert メソッドが呼び出されると、empType は常に Nothing として返されます (empType はデータベース フィールドです)。

データベースで適切に作成できるように、ドロップダウンリストの値をオブジェクトにアタッチする適切な方法は何ですか? 私の検索のほとんどは、ドロップダウン リストをオブジェクト データ ソースにバインドする方法を教えてくれますが、それは私がする必要があることではありません。これは基本的なドロップダウン リストで、変更されることのない 4 つの項目です。ここで標準の HTML 選択タグだけを使用することは理にかなっていますか、それとも役に立ちますか。

ご覧いただきありがとうございます。さらに情報が必要な場合はお知らせください。

4

2 に答える 2

1

単純なもののように見えますが、VS2008 IDE はこれがオプションであることを示していませんでした。ObjectDataSource にバインドするには、次のようにする必要があります。

<asp:TemplateField HeaderText="Type of Employee">
                    <ItemTemplate>
                        <asp:DropDownList ID="empType" runat="server" DataValueField="empType" SelectedValue='<%#Bind("empType") %>'>
                            <asp:ListItem Text="Full Time" Value="1" />
                            <asp:ListItem Text="Part Time" Value="2" />
                            <asp:ListItem Text="Subcontractor or 1099" Value="3" />
                            <asp:ListItem Text="Intern" Value="4" />
                        </asp:DropDownList>
                    </ItemTemplate>                   
                </asp:TemplateField>

ドロップダウン リストの SelectedValue 部分は、ドロップダウン リストの有効なタグとして表示されませんでしたが、VS はコンパイル時または実行時にそれを詰まらせません。最も重要なのは、動作することです!

于 2009-10-03T21:13:18.080 に答える
0

すべて問題ないように見えますが、ロードすると、ドロップダウン リストは最初から入力されていますか? そうでない場合は、ロード時にアイテムの 1 つを選択済みに設定してみてください。そうしないと、ユーザーが選択しないと値が返されない可能性があります。

于 2009-10-03T20:33:18.257 に答える