首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

關於在代碼中設置列的ColumnType屬性的問題,该如何解决

2012-01-31 
關於在代碼中設置列的ColumnType屬性的問題DataGridView1.DataSourceTable后其列自動產生現想對其中某一

關於在代碼中設置列的ColumnType屬性的問題
DataGridView1.DataSource=Table后其列自動產生
現想對其中某一列的ColumnType屬性做變更,該如何寫代碼?

[解决办法]

VB.NET code
    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

热点排行