在DetailsView中设置不可见字段/属性的值

时间:2011-03-16 18:38:18

标签: asp.net vb.net linq-to-entities detailsview

我有一个DetailsView,它有两个字段 - 一个是可见的,一个是不可见的。第一个用户填写,第二个我想自动填充。不幸的是,我无法找到在第二个不可见字段中设置值的方法。我已经尝试将这样的代码添加到Page_Load:

 If Not IsPostBack Then
        DetailsView1.DefaultMode = DetailsViewMode.Insert
        Dim txt1 As TextBox = DirectCast(DetailsView1.FindControl("Type"), TextBox)
        txt1.Text = "administrator"
 End If

但是这会返回“对象引用未设置为对象实例”的错误。关于如何实现这一点的任何想法 - 使用上述方法还是其他方法?

希望的最终结果是,当通过DetailsView插入新记录时,该记录将包括用户名(由用户输入)以及“管理员”的“类型”

2 个答案:

答案 0 :(得分:1)

当我遇到这个问题时,我解决这个问题的方法是让控件可见并将其放在面板或其他控件后面。

答案 1 :(得分:1)

您应该设置控件的样式:

style="visibility: hidden; height: 0"

这样浏览器就不会显示它们了。

如果将服务器上的控件设置为不可见,则不会呈现html。

修改 您还可以使用隐藏字段:

<asp:HiddenField runat=server Value="SomeValue" />

但是,将信息保存在服务器上,会话变量或其他内容可能更好。可以合并客户端上隐藏字段中的信息。