在datagridk中能不能只设置某一列的宽度?

zhaodianer 2004-09-11 10:09:52
在WinForm下在datagridk中能不能只设置某一列的宽度?
...全文
145 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinbingg 2004-09-22
  • 打赏
  • 举报
回复
同意楼上
LiloZhu 2004-09-22
  • 打赏
  • 举报
回复
使用datagrid 的樣式表 DataGrid.Tallestyles  做幫,寬度由你自已設定...

xuxun 2004-09-22
  • 打赏
  • 举报
回复
可以的,但比较麻烦,首先初始化列:
Dim DG1_TS As New DataGridTableStyle
DG1_TS.MappingName = "T_Sys_DataSet"

Dim DG1_TC As DataGridTextBoxColumn
DG1_TC = New DataGridTextBoxColumn
DG1_TC.MappingName = "ds_id"
DG1_TC.HeaderText = "自动编号"
DG1_TC.Width = 75
DG1_TS.GridColumnStyles.Add(DG1_TC)

DG1_TC = New DataGridTextBoxColumn
DG1_TC.MappingName = "ds_classname"
DG1_TC.HeaderText = "类名"
DG1_TC.Width = 75
DG1_TS.GridColumnStyles.Add(DG1_TC)

DG1_TC = New DataGridTextBoxColumn
DG1_TC.MappingName = "ds_name"
DG1_TC.HeaderText = "中文名"
DG1_TC.Alignment = HorizontalAlignment.Center
DG1_TC.Width = 75
DG1_TS.GridColumnStyles.Add(DG1_TC)

'DS_ID()DS_ClassName()DS_Name()DS_SelfName()DS_MaxRec()DS_TimeRange()DS_OrderMode()

DG1_TC = New DataGridTextBoxColumn
DG1_TC.MappingName = "ds_selfname"
DG1_TC.HeaderText = "别名"
DG1_TC.Alignment = HorizontalAlignment.Center
DG1_TC.Width = 75
DG1_TS.GridColumnStyles.Add(DG1_TC)

DG1_TC = New DataGridTextBoxColumn
DG1_TC.MappingName = "ds_maxrec"
DG1_TC.HeaderText = "返回记录数"

DG1_TC.Width = 75
DG1_TS.GridColumnStyles.Add(DG1_TC)

DG1_TC = New DataGridTextBoxColumn
DG1_TC.MappingName = "ds_TimeRange"
DG1_TC.HeaderText = "时间范围"
DG1_TC.Width = 75
DG1_TS.GridColumnStyles.Add(DG1_TC)

DG1_TC = New DataGridTextBoxColumn
DG1_TC.MappingName = "ds_OrderMode"
DG1_TC.HeaderText = "排序方式"
DG1_TC.Width = 75
DG1_TS.GridColumnStyles.Add(DG1_TC)

DG1_TC = New DataGridTextBoxColumn
DG1_TC.MappingName = "ds_isOver"
DG1_TC.HeaderText = "结束"
DG1_TC.Width = 75
DG1_TS.GridColumnStyles.Add(DG1_TC)

DataGrid1.TableStyles.Clear()
DataGrid1.TableStyles.Add(DG1_TS)

如果你想改变第三列的列宽,这样写就可以了
DataGrid1.TableStyles(0).GridColumnStyles(2).Width = 80

如果不进行之前的定义工作,则会提示出错
lxw2100 2004-09-22
  • 打赏
  • 举报
回复
如此,在asp下绑定你要添加的列,然后设置你想要改变的列的宽度就可以呢!参考下面代码!
<asp:DataGrid id="dgHistory" style="Z-INDEX: 105; LEFT: 16px; POSITION: absolute; TOP: 544px"
runat="server" Width="528px" Height="118px" PageSize="1" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="HistoryDate" HeaderText="Date/Time" ItemStyle-Width="20%"></asp:BoundColumn>
<asp:BoundColumn DataField="Comments" HeaderText="History" ItemStyle-Width="1400px"></asp:BoundColumn>
<asp:ButtonColumn Text=">>" CommandName="New"></asp:ButtonColumn>
</Columns>
</asp:DataGrid>
MicroSquirrel 2004-09-21
  • 打赏
  • 举报
回复
想实现自定义DataGrid显示样式,在不重写控件的情况下,只能通过创建自己的TableStyle进行控制了。把你不想修改的列的宽度设置为你需要的默认值不就可以了吗?
zhaodianer 2004-09-21
  • 打赏
  • 举报
回复
我是想说一共有五列,但只改变第三列,其它列不变,就象datagrid控件本身可自己就把逻辑字段直接变为单选框。
dofly 2004-09-11
  • 打赏
  • 举报
回复
下面的代码是别的网友写的(风暴虫):

如果是在WinForm下:
Dim ts As New DataGridTableStyle
ts.MappingName = Mydt.TableName
Dim Materiel_IdCol As New DataGridTextBoxColumn
With IdCol
.MappingName = "Id"
.HeaderText = "编号"
.ReadOnly = True
.Width = 0
End With
ts.GridColumnStyles.Add(idCol)
DataGrid1.TableStyles.Add(ts)
设置此列 的宽度为0 ,则隐藏掉

zhaodianer 2004-09-11
  • 打赏
  • 举报
回复
比如一个数据表绑定到datagrid,但只想改变其第三列的宽度,而其余列不变能实现吗?
Night_Elf 2004-09-11
  • 打赏
  • 举报
回复
dofly(巴山夜雨)你好歹也把有错误的细节改一下再给人家呀!
Dim ts As New DataGridTableStyle
ts.MappingName = Mydt.TableName
Dim IdCol As New DataGridTextBoxColumn
With IdCol
.MappingName = "MyId"
.HeaderText = "编号"
.ReadOnly = True
.Width = 0
End With
ts.GridColumnStyles.Add(idCol)
DataGrid1.TableStyles.Add(ts)
别给我分,我Copy dofly(巴山夜雨) 的!

16,555

社区成员

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

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