DetailsView コントロール (C# 4.0) を使用して、EntityDataSource コントロールでレコードを追加しています。DateAdded や UserId など、DetailsView コントロールに表示したくない追加が必要なフィールドがいくつかあります。これらのフィールドは自動的に追加する必要があります。
<asp:EntityDataSource ID="edsTasks" runat="server"
ContextTypeName="EKIMV2_MasterModel.EKIMV2_MasterEntities"
EnableFlattening="False" EnableInsert="True"
EntitySetName="tasks" ConnectionString="name=EKIMV2_MasterEntities"
DefaultContainerName="EKIMV2_MasterEntities">
</asp:EntityDataSource>
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px"
DataSourceID="edsTasks" DefaultMode="Insert"
AutoGenerateRows="False" DataKeyNames="task_id"
oniteminserted="DetailsView1_ItemInserted"
oniteminserting="DetailsView1_ItemInserting">
<Fields>
<asp:BoundField DataField="task_name" HeaderText="task_name"
SortExpression="task_name" />
<asp:BoundField DataField="task_desc" HeaderText="task_desc"
SortExpression="task_desc" />
<asp:TemplateField HeaderText="assigned_to" SortExpression="assigned_to">
<InsertItemTemplate>
<asp:DropDownList ID="ddlUsers" runat="server" DataSourceID="edsUsers" DataTextField="UserName" DataValueField="UserId"></asp:DropDownList>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("assigned_to") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ButtonType="Button" ShowCancelButton="False"
ShowInsertButton="True" />
</Fields>
</asp:DetailsView>
上記のように、DateAdded フィールドはありません。この値を今日の日付に自動的に設定したい。ユーザーは、値を追加したり、フィールドを表示したりする必要はまったくありません。自動的に設定したいフィールドは他にもありますが、詳しくは説明しませんが、DateAdded フィールドが良い例だと思います。
ItemInserting イベント中に追加のフィールドを何らかの方法で追加する必要があると考えていますが、どこから始めればよいかわかりません。
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
}
余分なフィールドを DetailsView に保持する必要があるかもしれないが、それらを非表示にする必要があることを他の場所で読みましたか? そうですか、それは正しいことのようには思えません。
実際には DetailsView にないフィールドに値を追加することは可能ですか?