怎样设置DataGrid中某一列的列宽呢?
比如,现在有三列,三列宽度不一样100,200,300,怎么设置呢?
还有一个问题就是不叫第二列在DataGrid中显示出来,应该怎样做呢?
问题点数:20、回复次数:12Top
1 楼skyhaha(内存严重不足)回复于 2005-02-28 15:48:17 得分 0
Dim dsxml As New DataSet
Dim XmlFilePath As String
XmlFilePath = System.IO.Path.GetFullPath("../xsxml.xml")
dsxml.ReadXml(XmlFilePath)
dsxml.Tables("item").Columns.Item(0).ColumnName = "文章标题"
dsxml.Tables("item").Columns.Item(3).ColumnName = "加入时间"
With DataGridXml
.DataSource = dsxml.Tables("item").DefaultView
End With
DataGridTableStyle应该怎么写呢?谢谢啊Top
2 楼dated(懵懂)回复于 2005-02-28 15:48:58 得分 2
先关掉datagrid的autoGerenerateColumns属性,再用属性生成器设置三个绑定列或两个随你,绑定数据源后分别设置宽度就成了Top
3 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-02-28 16:02:23 得分 5
Private Function gettablestyle(ByVal tbl As DataTable) As DataGridTableStyle
Dim style1 As New DataGridTableStyle()
style1.MappingName = tbl.TableName
style1.RowHeaderWidth = 15
Dim colnumber As Integer = tbl.Columns.Count
Dim i As Integer = 0
Dim col1 As DataGridTextBoxColumn
Dim str As String = "序号,材料编号,材料封度,材料名称,单位,用料数量,欠料数量,买料数量,明细id"
Dim strcaption() As String
strcaption = str.Split(",")
While i < colnumber
col1 = New DataGridTextBoxColumn()
col1.MappingName = tbl.Columns(i).ColumnName '不想绑定哪一列就不要在这里加进去就是了。
col1.HeaderText = strcaption(i)
col1.NullText = ""
If i = 0 Then
col1.Width = 35
End If
If i < 5 Then
col1.ReadOnly = True
End If
If i = 8 Then
col1.Width = 0 ’或者在这里设置宽度为0,也可以不显示这一列
End If
style1.GridColumnStyles.Add(col1)
i = i + 1
End While
Return style1
End FunctionTop
4 楼skyhaha(内存严重不足)回复于 2005-02-28 16:59:06 得分 0
Dim dsxml As New DataSet
Dim XmlFilePath As String
XmlFilePath = System.IO.Path.GetFullPath("../xsxml.xml")
dsxml.ReadXml(XmlFilePath)
Dim ts As New DataGridTableStyle
ts.MappingName = dsxml.Tables("item").TableName
Dim tc As New DataGridTextBoxColumn
With tc
.MappingName = dsxml.Tables("item").Columns.Item(0).ToString()
.HeaderText = "文章标题"
.Width = 50
.ReadOnly = True
End With
ts.GridColumnStyles.Add(tc)
Dim asd As New DataGridTextBoxColumn
With asd
.MappingName = dsxml.Tables("item").Columns.Item(1).ToString()
.HeaderText = "文章标题"
.Width = 50
.ReadOnly = True
End With
ts.GridColumnStyles.Add(asd)
MsgBox(tc.MappingName & tc.Width & tc.HeaderText)
With DataGridXml
.TableStyles.Clear()
.TableStyles().Add(ts)
'.DataSource = dsxml.Tables("item").DefaultView
End With
怎么在DataGrid中显示不出来呢?Top
5 楼aw511(点点星灯)回复于 2005-02-28 17:22:23 得分 2
1.设置DataGrid列的宽度
(DataGrid的列已经建好了)
右击DataGrid---->属性生成器--->格式--->(对象)中的"列"---->单击列名--->看到右边有个
宽度:(自己设置吧)
2.me.DataGrid1.Items(1).Visible=FalseTop
6 楼Night_Elf(风暴虫)回复于 2005-02-28 18:16:09 得分 0
使用DataTableStyle
:
MyDataGrid.DataSource = MyDataTable '绑定数据源
Dim ts As New DataGridTableStyle'定义表样式
ts.MappingName = MyDataTable.TableName
Dim tc As DataGridTextBoxColumn
tc=new DataGridTextBoxColumn‘定义列样式
With tc
.MappingName = "a"‘对应数据库中的a字段
.HeaderText = "A"'列标题
.Width = 50
.NullText = ""
.ReadOnly = True
End With
ts.GridColumnStyles.Add(tc)
tc=new DataGridTextBoxColumn
With colID
.HeaderText = "B"
.MappingName = "b"
.NullText = ""
End With
ts.GridColumnStyles.Add(tc)
tc=new DataGridTextBoxColumn
With colID
.HeaderText = "C"
.MappingName = "c"
.NullText = ""
End With
ts.GridColumnStyles.Add(tc)
tc=new DataGridTextBoxColumn
With colID
.HeaderText = "D"
.MappingName = "d"
.NullText = ""
.width=0'长度为0则隐藏
End With
ts.GridColumnStyles.Add(tc)
MyDataGrid.TableStyles.Clear()
MyDataGrid.TableStyles.Add(ts)
Top
7 楼skyhaha(内存严重不足)回复于 2005-02-28 18:44:24 得分 0
我的方法和你的一样啊,可是在DataGrid中表格显示不出来Top
8 楼zzmdegm(剑心)回复于 2005-02-28 18:48:53 得分 1
使用datagrid表样式,将相应的列样式的width设置为“你想要的值”Top
9 楼Night_Elf(风暴虫)回复于 2005-02-28 19:00:48 得分 0
to:skyhaha(觉悟) ,怎么可能?贴出你的代码看看!Top
10 楼skyhaha(内存严重不足)回复于 2005-02-28 19:02:51 得分 0
Dim dsxml As New DataSet
Dim XmlFilePath As String
XmlFilePath = System.IO.Path.GetFullPath("../xsxml.xml")
dsxml.ReadXml(XmlFilePath)
Dim ts As New DataGridTableStyle
ts.MappingName = dsxml.Tables("item").TableName
Dim tc As New DataGridTextBoxColumn
With tc
.MappingName = dsxml.Tables("item").Columns.Item(0).ToString()
.HeaderText = "文章标题"
.Width = 50
.ReadOnly = True
End With
ts.GridColumnStyles.Add(tc)
Dim asd As New DataGridTextBoxColumn
With asd
.MappingName = dsxml.Tables("item").Columns.Item(1).ToString()
.HeaderText = "文章标题"
.Width = 50
.ReadOnly = True
End With
ts.GridColumnStyles.Add(asd)
MsgBox(tc.MappingName & tc.Width & tc.HeaderText)
With DataGridXml
.TableStyles.Clear()
.TableStyles().Add(ts)
'.DataSource = dsxml.Tables("item").DefaultView
End With
这是那段代码,我用MsgBox来输出表名、列标题和宽度,都可以显示出来,可是添加到DataGrid中,整个表格就显示不出来,帮我看看吧,谢谢啦Top
11 楼Night_Elf(风暴虫)回复于 2005-02-28 19:10:59 得分 10
修改,再试试:
Dim dsxml As New DataSet
Dim XmlFilePath As String
XmlFilePath = System.IO.Path.GetFullPath("../xsxml.xml")
dsxml.ReadXml(XmlFilePath)
DataGridXml.DataSource = dsxml.Tables("item").DefaultView
Dim ts As New DataGridTableStyle
ts.MappingName = dsxml.Tables("item").TableName
Dim tc As New DataGridTextBoxColumn
With tc
.MappingName = dsxml.Tables("item").Columns.Item(0).ToString()
.HeaderText = "文章标题"
.Width = 50
.ReadOnly = True
End With
ts.GridColumnStyles.Add(tc)
Dim asd As New DataGridTextBoxColumn
With asd
.MappingName = dsxml.Tables("item").Columns.Item(1).ToString()
.HeaderText = "文章标题"
.Width = 50
.ReadOnly = True
End With
ts.GridColumnStyles.Add(asd)
With DataGridXml
.TableStyles.Clear()
.TableStyles().Add(ts)
End With
Top
12 楼skyhaha(内存严重不足)回复于 2005-02-28 19:24:28 得分 0
晕,数据源的问题啊,哎,我想表都添加到DataGrid里面了,想就不用数据源了,结果.......
谢谢大哥啊。Top




