DataGrid如何固定列宽?

w_w2000 2005-11-16 04:25:48
在winform里面如何固定DataGrid的列宽?
...全文
388 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
singlepine 2006-01-11
  • 打赏
  • 举报
回复
添加模板列,设置被编辑的textbox的宽度为100%;如果是绑定列就不用做这些
<asp:TemplateColumn SortExpression="UserName" HeaderText="姓名">
<HeaderStyle Width="70px"></HeaderStyle>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"UserName") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=UserName Text='<%# DataBinder.Eval(Container.DataItem,"UserName") %>' Width="100%" Runat="server">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>


在ItemDataBound事件中加如下代码,通过调整i的取值来设置对某几个列调整
private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
switch (e.Item.ItemType)
{
case ListItemType.EditItem:
for (int i=0; i < DataGrid1.Columns.Count; i++)//只调整被编辑的列
{
   if(e.Item.ItemType==ListItemType.EditItem)
   {
    e.Item.Cells[i].Attributes.Add("Width", "70px");
   }
}
break;
}
}

不过要确保绑定前的宽度和要被编辑时的宽度是一样的
可以参考
http://singlepine.cnblogs.com/articles/266538.html
dalianu 2005-12-16
  • 打赏
  • 举报
回复
接着xiaowengang(海岛) 的代码
Dim Tstyle As New DataGridTableStyle
Dim DCstyle As DataGridColumnStyle
DCstyle = New DataGridTextBoxColumn '创建一个新列
With DCstyle
.MappingName = "勾序" ' 设置字段映射关系
.HeaderText = "勾序" '设置表头显示字符
.Width = 37 '设置列宽
End With
Tstyle.GridColumnStyles.Add(DCstyle)
DCstyle.Dispose()
写委托
addhandler DCstyle.widthchanged, new eventhandler(addressof 列宽改变赋常量的方法)
应该可以.
tinco 2005-12-16
  • 打赏
  • 举报
回复
等待解答中...
mqmmx 2005-11-18
  • 打赏
  • 举报
回复
这样用户点到列中间鼠标就不起作用了,但好像会有其它问题,没怎么试,你看看行不
mqmmx 2005-11-18
  • 打赏
  • 举报
回复
我用的方法不怎么好,不知会不会有问题,我继承控件DataGrid重写方法MouserDown
Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
Dim hti As System.Windows.Forms.DataGrid.HitTestInfo
hti = me.HitTest(e.X,e.Y);
If hti.Type = DataGrid.HitTestType.ColumnResize Then
Return
Else
MyBase.OnMouseDown(e)
End If
End Sub
du9232 2005-11-18
  • 打赏
  • 举报
回复
不要用百分比设,直接设成固定值就可以了
youlinga 2005-11-18
  • 打赏
  • 举报
回复
Me.UltraGrid2.DisplayLayout.Bands(0).Columns(2).Width = 191
liym15 2005-11-17
  • 打赏
  • 举报
回复
((TextBox)(LoginGrid.Items[e.Item .ItemIndex].Cells[3].Controls [0])).Style .Add ("Width","80px");//设宽度
w_w2000 2005-11-17
  • 打赏
  • 举报
回复
UP
cnwd 2005-11-16
  • 打赏
  • 举报
回复
up
w_w2000 2005-11-16
  • 打赏
  • 举报
回复
海岛,好像没用阿~
w_w2000 2005-11-16
  • 打赏
  • 举报
回复
是的,不允许别人去拉拽去调整
湖中仙人 2005-11-16
  • 打赏
  • 举报
回复
Dim Tstyle As New DataGridTableStyle
Dim DCstyle As DataGridColumnStyle
DCstyle = New DataGridTextBoxColumn '创建一个新列
With DCstyle
.MappingName = "勾序" ' 设置字段映射关系
.HeaderText = "勾序" '设置表头显示字符
.Width = 37 '设置列宽
End With
Tstyle.GridColumnStyles.Add(DCstyle)
DCstyle.Dispose()
hamadou 2005-11-16
  • 打赏
  • 举报
回复
意思是不允许别人去拉拽去调整吗?
w_w2000 2005-11-16
  • 打赏
  • 举报
回复
在VB。NET下

16,554

社区成员

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

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