DetailsView为复选框插入默认值

时间:2013-07-17 15:40:11

标签: asp.net checkbox insert default detailsview

我有一个用于插入数据库的大型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

但是,所有复选框仍然作为空值提交。我做错了什么?

1 个答案:

答案 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