如何使布尔列可编辑(asp.net VB gridView由具有布尔列的DataTable填充)?
在GridView的数据源中填充数据表之后。出现复选框类型为的列,但该列已创建为只读列 我无法启用它或使其可编辑。。。甚至我也试过了。readonly=false 但仍然无法编辑如何使布尔列可编辑(asp.net VB gridView由具有布尔列的DataTable填充)?,asp.net,vb.net,gridview,datatable,Asp.net,Vb.net,Gridview,Datatable,在GridView的数据源中填充数据表之后。出现复选框类型为的列,但该列已创建为只读列 我无法启用它或使其可编辑。。。甚至我也试过了。readonly=false 但仍然无法编辑 有谁能帮忙吗?你可以这样试试 这是故意的;默认情况下,GridView中的行不可编辑 有两种方法可以解决此问题: 添加编辑链接 在GridView标记中,添加AutoGenerateEditButton=“True”。当GridView在浏览器中呈现时,您现在应该会找到一个标记为“编辑”的超链接。如果单击它,GridV
有谁能帮忙吗?你可以这样试试 这是故意的;默认情况下,GridView中的行不可编辑 有两种方法可以解决此问题:
在GridView标记中,添加
AutoGenerateEditButton=“True”
。当GridView在浏览器中呈现时,您现在应该会找到一个标记为“编辑”的超链接。如果单击它,GridView中的字段将变为可编辑,编辑链接将变为两个链接,一个用于保存对数据库的更改,另一个用于放弃更改。使用此方法,可以为您完成将GridView中的更改连接到数据库的所有管道,具体取决于您执行数据绑定的方式。此示例使用SqlDataSource控件。(来源:)
在
标记内,您可以添加为自己设置数据绑定的TemplateFields,例如
(来源:)
此复选框将被启用,但您需要自己完成工作,以将任何更改反映回数据库。只要您能够获得数据库密钥,这就很简单,因为您需要在某个时刻运行UPDATE
语句,并且希望在正确的行上运行它!有两种方法可以做到这一点:
在Gridview标记中,添加DataKeyNames=“MyDatabasePrimaryKey”
。然后在CheckedChanged
事件处理程序中,您需要找出您所在的行,并在DataKeys
数组中查找该行
Protected Sub DiscontinuedCheckBox_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim DiscontinuedCheckBox As CheckBox
Dim conn As SqlConnection
Dim cmd As SqlCommand
Dim productId As Integer
Dim selectedRow As GridViewRow
' Cast the sender object to a CheckBox
DiscontinuedCheckBox = CType(sender,CheckBox)
' We can find the row we clicked the checkbox in by walking up the control tree
selectedRow = CType(DiscontinuedCheckBox.Parent.Parent,GridViewRow)
' GridViewRow has a DataItemIndex property which we can use to look up the DataKeys array
productId = CType(ProductGridView.DataKeys(selectedRow.DataItemIndex).Value,Integer)
conn = New SqlConnection(ProductDataSource.ConnectionString)
cmd = New SqlCommand
cmd.Connection = conn
cmd.CommandType = CommandType.Text
If DiscontinuedCheckBox.Checked Then
cmd.CommandText = ("UPDATE Products SET Discontinued = 1 WHERE ProductId = " + ProductId.ToString)
Else
cmd.CommandText = ("UPDATE Products SET Discontinued = 0 WHERE ProductId = " + ProductId.ToString)
End If
conn.Open
cmd.ExecuteNonQuery
conn.Close
End Sub
或者,您可以在HiddenField控件中添加密钥:
我希望它能帮助您……看看如何创建复选框列。它启用了吗?
Protected Sub DiscontinuedCheckBox_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim DiscontinuedCheckBox As CheckBox
Dim ProductIdHiddenField As HiddenField
DiscontinuedCheckBox = CType(sender,CheckBox)
ProductIdHiddenField = CType(DiscontinuedCheckBox.Parent.FindControl("ProductIdHiddenField"),HiddenField)
conn = New SqlConnection(ProductDataSource.ConnectionString)
..................
If DiscontinuedCheckBox.Checked Then
cmd.CommandText = ("UPDATE Products SET Discontinued = 1 WHERE ProductId = " + ProductIdHiddenField.Value)
End If
...............
End Sub