原谅我,但我是一个.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和用户名填充文本框。
但是提交表单时,文本框中的值不会插入到数据库中。
当值来自函数时,如何设置字段的默认值?
感谢您的帮助!
答案 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