| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1049 人关注过本帖
标题:[求助]求助datagird控件的列宽如何解决?(待解决,调试中)
只看楼主 加入收藏
coolmanzyc
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-8-30
收藏
 问题点数:0 回复次数:15 
[求助]求助datagird控件的列宽如何解决?(待解决,调试中)

我的datagird控件在显示数据库数据后,每一列的单元格里显示的内容不会根据字段的大小而改变,所以说有很多字都看不到,像这种问题该怎么解决?

[此贴子已经被作者于2006-8-31 15:53:58编辑过]

搜索更多相关主题的帖子: datagird控件 数据库 调试 
2006-08-30 15:02
coolmanzyc
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-8-30
收藏
得分:0 
有没有人帮忙,解决一下?
是windows应用程序.

QQ:416246137 欢迎大家交流
2006-08-30 15:20
coolmanzyc
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-8-30
收藏
得分:0 

来个高手帮忙解决一下


QQ:416246137 欢迎大家交流
2006-08-30 15:30
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 

private void Form1_Load(object sender, System.EventArgs e)
{
string conString = "Provider=Microsoft.Jet.OlEDB.4.0;Persist Security Info = False;" +
"Data Source = D:\\KFGL.MDB";
string sql = "Select * From 客房预定表";
OleDbConnection Conn = new OleDbConnection(conString); //建立Connection对象
Conn.Open(); //打开连接
OleDbDataAdapter Adapter = new OleDbDataAdapter(sql,Conn);
DataSet dataSet = new DataSet();
Adapter.Fill(dataSet,"客房预定表");
dataGrid1.SetDataBinding(dataSet,"客房预定表"); //将数据源绑定到DataGrid控件

Conn.Close();

//设置DataGrid控件数据表样式
DataGridTableStyle dataGridStyle = new DataGridTableStyle();
dataGridStyle.MappingName = dataSet.Tables[0].TableName; //映射到数据表样式的名称

//建立数据行样式DataGridTextBoxColumn类

DataGridTextBoxColumn NumColumn = new DataGridTextBoxColumn();
NumColumn.MappingName = "编号";
NumColumn.HeaderText = "编号";
NumColumn.Width = GetFieldLong(dataSet,dataSet.Tables[0].TableName,"编号");
dataGridStyle.GridColumnStyles.Add(NumColumn);

DataGridTextBoxColumn NameColumn = new DataGridTextBoxColumn();
NameColumn.MappingName = "姓名";
NameColumn.HeaderText = "姓名";
NameColumn.Width = GetFieldLong(dataSet,dataSet.Tables[0].TableName,"姓名");
dataGridStyle.GridColumnStyles.Add(NameColumn);

DataGridTextBoxColumn PasswordColumn = new DataGridTextBoxColumn();
PasswordColumn.MappingName = "证件号";
PasswordColumn.HeaderText = "证件号";
PasswordColumn.Width = GetFieldLong(dataSet,dataSet.Tables[0].TableName,"证件号");
dataGridStyle.GridColumnStyles.Add(PasswordColumn);

dataGrid1.TableStyles.Add(dataGridStyle); //添加数据表样式

}

//建立一个Function,用来求得数据表某列的最大长度,
//第一个参数为DataSet对象,第二个参数为数据表的名称,第三个参数为字段名。
//返回值为int
private int GetFieldLong(DataSet dataSet, string tableName, string fieldName)
{
Graphics graphics = dataGrid1.CreateGraphics();
Font font = dataGrid1.Font;
int offset = (int) graphics.MeasureString(" ",font).Width; //求得" "的宽度。
int MaxLong = 0; //存放最长的值
int templong = 0; //存放某行字段的长度
string fieldValue = null;
int rowCount = dataSet.Tables[tableName].Rows.Count; //得到记录总数

for(int i = 0;i < rowCount;i++)
{
fieldValue = dataSet.Tables[tableName].Rows[i][fieldName].ToString(); //得到该行字段的值
templong = (int) graphics.MeasureString(fieldValue,font).Width; //获取该字段的宽度

//如果templong的宽度是大于Maxlong,就记录下它
if(templong > MaxLong)
MaxLong = templong;
}

graphics.Dispose();
return offset + MaxLong ;

}


我的msn: myfend@
2006-08-30 16:12
coolmanzyc
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-8-30
收藏
得分:0 
谢谢楼上的,不过我的问题是我自己怎么样在代码里设置datagrid控件的列宽呢?

QQ:416246137 欢迎大家交流
2006-08-30 16:51
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
使用DataGridTextBoxColumn类,可以设置列宽Width,只要结合我写的函数GetFieldLong就可以。

我的msn: myfend@
2006-08-30 16:53
coolmanzyc
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-8-30
收藏
得分:0 
楼上的大姐,麻烦给出示例吧,我真的解决不了。

QQ:416246137 欢迎大家交流
2006-08-30 16:54
coolmanzyc
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-8-30
收藏
得分:0 

我从网上找到了,不过有缺点,缺点我写在最后:

1、新建立一个 DataGridTableStyle
DataGridTableStyle dtstyle= new DataGridTableStyle();
2、绑定数据源
dtstyle.MappingName=TableName;
3、设定
dg.TableStyles.Clear();
dg.TableStyles.Add(dtstyle);
dg.TableStyles[TableName].GridColumnStyles[ColumnName].Width=200

注意: dg.TableStyles[TableName].GridColumnStyles[ColumnName].Width=200
这里有问题.


QQ:416246137 欢迎大家交流
2006-08-30 16:58
coolmanzyc
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-8-30
收藏
得分:0 
dg.TableStyles[TableName].GridColumnStyles[ColumnName].Width=200
[tablename].这个.后面根本就点不出来。

QQ:416246137 欢迎大家交流
2006-08-30 16:59
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
以下是引用coolmanzyc在2006-8-30 16:54:47的发言:
楼上的大姐,麻烦给出示例吧,我真的解决不了。

我代码都发出来了,还给什么示例?


我的msn: myfend@
2006-08-30 16:59
快速回复:[求助]求助datagird控件的列宽如何解决?(待解决,调试中)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.066924 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved