我正在使用DetailsView控件(C#4.0)添加具有EntityDataSource控件的記錄。有些字段需要添加,我不想在DetailsView控件中顯示 - 如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中的字段?
另外值得注意的是在TemplateFields,BoundFields等有一個名爲「InsertVisible」(布爾值)的屬性,您可以選擇在插入模式下顯示或隱藏一個字段。 –