如何设置在windows窗体中的datagrid的标题,并确定每一列队应的字段

主  题:  如何设置在windows窗体中的datagrid的标题,并确定每一列队应的字段?
作  者:  huang_sir (山)
等  级:  ^
信 誉 值:  100
所属论坛:  .NET技术 C#
问题点数:  20
回复次数:  15
发表时间:  2003-12-1 17:08:08

说明一下不是在web窗体中的控件,windows窗体中的datagrid没有columns属性,不知道如何设置,请教



回复人: huang_sir(山) ( 一级(初级)) 信誉:100 2003-12-1 17:17:45 得分:0

online

回复人: citymeteor(流星) ( 三级(初级)) 信誉:99 2003-12-1 17:22:17 得分:0

datagrid.tablestyles属性

回复人: brightheroes(闭关) ( 一星(中级)) 信誉:100 2003-12-1 17:27:08 得分:0

private void setDataGridTableStyle()
{
    System.Windows.Forms.DataGridTableStyle dts = new DataGridTableStyle();
    dts.AllowSorting = false;

    dts.MappingName = this.dt.TableName;
    dts.RowHeadersVisible = false;

    DataGridTextBoxColumn dtc;

    dtc = new DataGridTextBoxColumn();
    dtc.Format = "";
    dtc.MappingName = "ID";
    dtc.HeaderText = "ID";
    dtc.NullText = "";
    dtc.Width = 0;
    dts.GridColumnStyles.Add(dtc);
    
    dtc = new DataGridTextBoxColumn();
    dtc.Format = "";
    dtc.MappingName = "Name";
    dtc.HeaderText = "名称";
    dtc.NullText = "";
    dtc.Width = 125;
    dts.GridColumnStyles.Add(dtc);

    dtc = new DataGridTextBoxColumn();
    dtc.Format = "";
    dtc.MappingName = "master";
    dtc.HeaderText = "负责人";
    dtc.NullText = "";
    dtc.Width = 125;
    dts.GridColumnStyles.Add(dtc);

    dtc = new DataGridTextBoxColumn();
    dtc.Format = "";
    dtc.MappingName = "description";
    dtc.HeaderText = "描述";
    dtc.NullText = "";
    dtc.Width = 180;
    dts.GridColumnStyles.Add(dtc);

    this.dgMain.TableStyles.Clear();
    this.dgMain.TableStyles.Add(dts);

回复人: brightheroes(闭关) ( 一星(中级)) 信誉:100 2003-12-1 17:27:53 得分:0

dt是你的DataTable

回复人: huang_sir(山) ( 一级(初级)) 信誉:100 2003-12-1 17:29:42 得分:0

可否详细说一下

回复人: huang_sir(山) ( 一级(初级)) 信誉:100 2003-12-1 17:37:57 得分:0

在设计界面下看不到阿

回复人: huang_sir(山) ( 一级(初级)) 信誉:100 2003-12-1 17:57:54 得分:0

请求答复

回复人: liusuccess(减肥成功) ( 二级(初级)) 信誉:95 2003-12-1 18:05:35 得分:0

style=new DataGridTableStyle();
style.MappingName="Customers";

for (int i=0;i<=5;i++)
{
    DataGridTextBoxColumn col=new DataGridTextBoxColumn();
    col.MappingName=ds.Tables["Customers"].Columns[i].ToString();
    //你可以把下面这句代码改成="客户名称"之类的中文标题
    col.HeaderText=ds.Tables["Customers"].Columns[i].ToString();
    style.GridColumnStyles.Add(col);
}
dataGrid1.TableStyles.Add(style);

回复人: wildhope(沐秋) ( 一级(初级)) 信誉:100 2003-12-1 19:44:51 得分:0

正好我也在寻求这个问题的答案,刚才参看了一下brightheroes(闭关) 的代码,又摸索着使用DataGridStyle集合编辑器(在DataGrid属性窗口中点击TableStyles集合按钮可得)试着在设计阶段为DataGrid设置列标题,取得了部分成功,在这里我就现学现卖根大家讨论一下。首先如果DataGrid的DataSource设置为DataSet的时候,可以点击[DataGridStyle集合编辑器]中的添加按钮添加dts(DataGridTableStyles),在其MappingName属性下拉框中选择相应的要绑定的数据表myDataTable.然后点击dts的GridColumnStyles集合按钮进入[GridColumnStyles集合编辑器],添加按钮小黑箭头可向GridColumnStyles集合中选择添加dtc(DataGridTextBoxColumn),然后在dtc的属性窗口中修改MappingName和HeaderText即可。

不过我也有没解决的问题,如果DataSource是DataTable的时候,就不会设置了。我试验着按上面的方法设置好DataGrid后,将DataGrid的DataSource属性修改成相对应的DataTable 结果是可行的,可是比如原先设置的DataGrid的自动套用格式就无法使用了。我手头的资料不多,我觉得DataGrid应该有个设置当前表的dts的属性,不知道对不对,大家继续探讨一下。

回复人: wildhope(沐秋) ( 一级(初级)) 信誉:100 2003-12-2 9:10:12 得分:0

我知道了,数据源为DataTable的DataGrid等效为数据源为DataSet 而DataMember为对应的同一个表的设置。所以设置只显示单个DataTable也用DataSet作数剧源,这样在设计阶段的设置就都统一到数据源为DataSet的这种情况。

我还有个问题,如何才能设置列标题字体居中,我找不到,请高手给指点一下

回复人: huang_sir(山) ( 一级(初级)) 信誉:100 2003-12-2 9:10:55 得分:0

继续阿

回复人: wildhope(沐秋) ( 一级(初级)) 信誉:100 2003-12-03 09:12:00 得分:0

ding

回复人: brightheroes(闭关) ( 一星(中级)) 信誉:100 2003-12-03 09:31:00 得分:0

居中如下
dgtbc.Alignment = System.Windows.Forms.HorizontalAlignment.Center;

回复人: brightheroes(闭关) ( 一星(中级)) 信誉:100 2003-12-03 09:49:00 得分:0

dtc.Alignment = System.Windows.Forms.HorizontalAlignment.Center;

回复人: wildhope(沐秋) ( 一级(初级)) 信誉:100 2003-12-03 09:56:00 得分:0

谢谢两位,但是你们所说的是列值在DataGrid中居中,我是想问如何让标题(比如姓名、年龄等)居中。

Contributors: FHL