如何在.NET详细信息视图插入模式中为字段指定默认值

时间:2010-07-07 17:54:42

标签: asp.net

原谅我,但我是一个.NET新手。我知道必须有办法做到这一点。

我有一个详细信息视图,其默认模式设置为Insert。这将用作用户将记录输入数据库的表单。对于其中两个字段,我想用信息预先填充该字段。具体来说,我有一个带有一些函数的vb脚本来查询Active Directory以根据用户ID返回用户的名称。这个脚本工作正常。

我调用用户名的函数如下:

<InsertItemTemplate>
    <asp:TextBox ID="txtUserID" runat="server" Text='<%#CurrentUID() %>'></asp:TextBox>
</InsertItemTemplate>  
<InsertItemTemplate>
    <asp:TextBox ID="txtUserName" runat="server" Text='<%# GetUserName(CurrentUID()) %>'></asp:TextBox>
</InsertItemTemplate> 

加载页面时,会使用用户ID和用户名填充文本框。

但是提交表单时,文本框中的值不会插入到数据库中。

当值来自函数时,如何设置字段的默认值?

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

detailsview不知道要绑定到哪个数据库字段。我会更改模板中的文本框以绑定到字段并在代码中设置默认值:

<InsertItemTemplate>
    <asp:TextBox ID="txtUserID" runat="server" Text='<%#Bind("UserIDField") %>'></asp:TextBox>
</InsertItemTemplate>  
<InsertItemTemplate>
    <asp:TextBox ID="txtUserName" runat="server" Text='<%#Bind("UserNameField") %>'></asp:TextBox>
</InsertItemTemplate> 

Protected Sub DetailsView_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles DetailsView.DataBound

    If DetailsView.CurrentMode = DetailsViewMode.Insert Then

        DirectCast(DetailsView.FindControl("txtUserID"), TextBox).Text=CurrentUID()
        DirectCast(DetailsView.FindControl("txtUserName"), TextBox).Text=GetUserName(CurrentUID())

    End If

End Sub