關於在代碼中設置列的ColumnType屬性的問題
DataGridView1.DataSource=Table后其列自動產生
現想對其中某一列的ColumnType屬性做變更,該如何寫代碼?
[解决办法]
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim table As New DataTable With table.Columns .Add("姓名") .Add("收入", GetType(Single)) End With With table.Rows .Add("张三", 100.2) .Add("李四", 78933.3) End With table.AcceptChanges() Me.DataGridView1.DataSource = table End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Me.DataGridView1.Columns("收入").DefaultCellStyle.Format = "0" End Sub
[解决办法]
如果对这样的列修改的多,但不如不让GridView自动生成列,而是自己来添加列对象。
如果自动生成的话,是在代码运行起来以后才能访问修改的。
可以通过AutoGenerateColumns= "False " 来决定是否自动的让Grid生成列信息。
[解决办法]
'将列名等于A 的列 替换成 DataGridViewComboBoxColumn
'ttable 是 DataGridViewComboBoxColumn 中的下拉框 的数据源 ttable 表 必须包含 DataGridView1 A 列的值
'否则会出错
For i As Integer = 0 To Me.DataGridView1.Columns.Count - 1
Dim column As DataGridViewColumn
column = Me.DataGridView1.Columns(i)
If column.Name = "A" Then
Dim cbocolumn As New DataGridViewComboBoxColumn
cbocolumn.DisplayIndex = column.DisplayIndex
cbocolumn.DataPropertyName = column.DataPropertyName
cbocolumn.HeaderText = column.HeaderText
cbocolumn.Name = "cbo" + column.Name
Me.DataGridView1.Columns.Insert(column.Index, cbocolumn)
Me.DataGridView1.Columns.Remove(column)
cbocolumn.DataSource = ttable
cbocolumn.DisplayMember = "value"
cbocolumn.ValueMember = "value"
End If
Next
[解决办法]
设置Column的Expression属性,可以达到你所说的Update语句一样的功能。
详情查看MSDN:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemdatadatacolumnclassexpressiontopic.asp