我有一个用于插入数据库的大型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
但是,所有复选框仍然作为空值提交。我做错了什么?
答案 0 :(得分:0)
尝试处理ItemInserting
事件,并更新DetailsViewInsertEventArgs对象的“Values”集合。这些是将传递给数据源的insert语句的值。
浏览并将每个隐藏的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"
另一个想法:如果上述方法不起作用(由于某些原因,那些隐藏的CheckBox在Values集合中没有条目),我就不会在服务器端隐藏它们 - 使用CSS或JavaScript隐藏它们。换句话说,不要在CheckBox上使用Visible="False"
,而是使用CSS属性display:none
。