1

我有一个用于插入数据库的大 DetailsView 表单,并且我有很多(10+)复选框字段。其中许多是不可见的,因为我们不希望那些已激活的字段尚未提交数据(但将来可能会被激活)。

如何首先将所有复选框的默认值设置为“false”(未选中)?截至目前,它们被作为空值插入,并且与其他所有内容都不能很好地配合。

到目前为止,我已经将此代码作为 DetailsView 的 onDataBound 事件运行:

Dim row As DetailsViewRow
    For Each row In DetailsView1A.Rows
        If row.Cells.GetType() = GetType(CheckBox) Then
           Dim tempCheckbox As CheckBox = CType(row.Cells(1).Controls(0), CheckBox)
           If tempCheckbox Is DBNull.Value Then
              tempCheckbox.Checked = False
           End If
        End If
     Next

但是,所有复选框仍以空值形式提交。我究竟做错了什么?

4

1 回答 1

0

尝试处理该ItemInserting事件,并更新 DetailsViewInsertEventArgs 对象的“值”集合。这些是将传递给数据源的插入语句的值。

浏览并将每个隐藏的 CheckBox 列的“值”条目更新为False. 这是一个例子:

Sub CustomerDetail_ItemInserting(ByVal sender As Object, ByVal e As DetailsViewInsertEventArgs)
    e.Values("yourFieldName") = False
End Sub

请注意,“yourFieldName”将是 DetailsView 连接到的数据源中列的名称。

此外, False 可能需要是一个字符串,我不确定这实际上是如何传递的:

e.Values("yourFieldName") = "False"

另一种想法:如果上述方法不起作用(由于某种原因,那些隐藏的复选框在 Values 集合中没有条目),我不会在服务器端隐藏它们 - 使用 CSS 或 JavaScript 隐藏它们。换句话说,不要Visible="False"在 CheckBox 上使用 CSS 属性display:none

于 2013-07-18T14:07:06.497 回答