设置DataGrid表格控件的列显示样式,例如设置列宽,表头等

wubaiyong 2005-01-21 08:53:51
设置DataGrid表格控件的列显示样式,例如设置列宽,表头等,请各位帮忙,急用!!!
...全文
205 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
c11_11_11 2005-01-21
  • 打赏
  • 举报
回复
Label1.Parent = DataGrid1

Label1.BackColor = Color.Transparent

Dim dt As DataTable

dt = DataSet1.Tables.Add("MyTable")

dt.Columns.Add("列1", GetType(String))

dt.Columns.Add("列2", GetType(Integer))

Dim row, row1 As DataRow

row = dt.NewRow()

row!列1 = "行1"

row!列2 = 1

dt.Rows.Add(row)

row1 = dt.NewRow()

row1!列1 = "行2"

row1!列2 = 12

dt.Rows.Add(row1)

'构建完毕



Dim ts As New DataGridTableStyle() '就是它决定了datagrid是什么样的

Dim aColumnTextColumn As DataGridTextBoxColumn '决定每一列的样式

DataGrid1.DataSource = dt ‘ 设定数据源

ts.MappingName = dt.TableName



Dim numCols As Integer

numCols = dt.Columns.Count ‘数据源的列数

DataGrid1.CaptionText = "Henry示例"

Dim i As Integer = 0



Do While (i < numCols) '重绘所有的列

aColumnTextColumn = New DataGridTextBoxColumn()

'要更改列头名,请改下句的HeaderText值

aColumnTextColumn.HeaderText = dt.Columns(i).ColumnName ☆

aColumnTextColumn.MappingName = dt.Columns(i).ColumnName ☆

‘控制列宽与行宽

If i = 1 Then

ts.PreferredColumnWidth = 50

ts.PreferredRowHeight = 20

End If

ts.AlternatingBackColor = Color.LightGray '设定交替行的背景色

ts.GridColumnStyles.Add(aColumnTextColumn) '增加一种自定义的column风格

i = (i + 1)

Loop

DataGrid1.TableStyles.Add(ts) '增加一种自定义的表风格

'注:增加风格后,你在datagrid中实时增加新的纪录,风格仍不会变

wubaiyong 2005-01-21
  • 打赏
  • 举报
回复
有没有其它办法了,请贴一段成熟的代码.
心情解码 2005-01-21
  • 打赏
  • 举报
回复
:)


--
sutalon 2005-01-21
  • 打赏
  • 举报
回复
up
landlordh 2005-01-21
  • 打赏
  • 举报
回复

'通用样式化Datagird
'Power by:landlordh
'调用:
' strHeaders() 里面改为自已需要的列名
' iWidths() 里面改为相对应的列宽
' inputnum 在样式化之前赋值
' style(DataGrid1, DataSet1.Tables("codes"))
'
'=================================================================

'列名,字段对应名
Public strHeaders() As String = {"编号", "时间", "主题", "内容"}
'列宽,为0隐藏(优先级低于inputnum),对应的列宽
Public iWidths() As Integer = {0, 70, 130, 0}
'显示几列,为空则显示所有,为0则隐藏所有
Public inputnum As String

Public Sub style(ByVal datagridname As DataGrid, ByVal dataname As DataTable)
Try
datagridname.DataSource = dataname
'dataname.DefaultView.AllowNew = False
'dataname.DefaultView.AllowEdit = False
Dim i As Integer
If Trim(inputnum) <> "" Then
Dim num As Integer
Try
num = CInt(Trim(inputnum))
Try
For i = 0 To iWidths.Length - 1
If i >= inputnum Then
iWidths(i) = 0
End If
Next
Catch ex As Exception
End Try
Catch ex As Exception
MsgBox("你输入的字符不符合要求")
End Try
End If
Dim ts As New DataGridTableStyle
ts.MappingName = dataname.TableName
ts.AlternatingBackColor = System.Drawing.Color.PapayaWhip
ts.BackColor = System.Drawing.Color.WhiteSmoke
ts.GridLineColor = System.Drawing.Color.Tan
ts.SelectionBackColor = System.Drawing.Color.LightSteelBlue
ts.SelectionForeColor = Color.Black
ts.RowHeaderWidth = 10
ts.PreferredRowHeight = 20
For i = 0 To dataname.Columns.Count - 1
Dim ac As New DataGridTextBoxColumn
'处理点击行
'AddHandler ac.TextBox.Enter, AddressOf TextBoxEnterHandler
ac.HeaderText = strHeaders(i)
ac.MappingName = dataname.Columns(i).ColumnName
ac.TextBox.Width = iWidths(i)
ts.PreferredColumnWidth = ac.TextBox.Width
'哪列,i=第几列数-1
If i = 1 Then
ac.Format = "yyyy-mm-dd hh:mm:ss"
'ac.ReadOnly = True
'ac.NullText = ""
ac.Alignment = HorizontalAlignment.Center
End If
If i = 1 Or i = 2 Then
'ac.ReadOnly = True
'ac.NullText = ""
ac.Alignment = HorizontalAlignment.Center
End If
ts.GridColumnStyles.Add(ac)
Next
datagridname.TableStyles.Clear()
datagridname.TableStyles.Add(ts)
Catch ex As Exception
MessageBox.Show("格式化网格出错了")
End Try
End Sub

Public Sub TextBoxEnterHandler(ByVal sender As Object, ByVal e As System.EventArgs)
Dim inner As Control = sender
inner.Visible = False
If DataGrid1.CurrentRowIndex >= 0 Then
DataGrid1.Select(DataGrid1.CurrentRowIndex)
End If
'filltext()
End Sub
weixinzhu 2005-01-21
  • 打赏
  • 举报
回复
用c1truedbgrid,什么都可以实现,下载地址:
http://msdn.microsoft.com/vbasic/vbrkit/default.aspx

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧