两种方法修改datagrid的列名怎么都不行???

主  题:  两种方法修改datagrid的列名怎么都不行???
作  者:  luoxiang2000 (腾空)
等  级:  ^
信 誉 值:  100
所属论坛:  .NET技术 C#
问题点数:  50
回复次数:  11
发表时间:  2003-7-14 0:59:28

1、

DataGridTableStyle ts = new DataGridTableStyle();
ts.MappingName = "infboard";//要和datagrid的表名一样
dataGrid1.TableStyles.Add(ts);
ts.GridColumnStyles["topic"].HeaderText="标题";

报错:未处理的"System.NullReferenceException"类型的异常出现在abc.exe中。
其它信息:未将对象引用设置到对象的实例。

2、
我修改了sqlDataAdapter1的selectd的commandtext语句,为 select topic as 标题 from infboard
也报错:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
原因好像是因为topic是这个表的主键,那怎么办呢?



回复人: luoxiang2000(腾空) ( 一级(初级)) 信誉:100 2003-7-14 1:00:37 得分:0

这种方法也不行:
DataGrid.Columns[0].ColumnName="姓名"
结果出错

“System.Windows.Forms.DataGrid”并不包含对“Column”的定义
请问是怎么回事?

回复人: lufly2000(凌绝顶) ( 四级(中级)) 信誉:99 2003-7-14 1:29:08 得分:20

要创建DataGridTextBoxColumnDataGridTableStyle,然后datagridtablestyle.GridColumnStyles.Add(DataGridTextBoxColumn对象)
最后DataGrid1.TableStyles.Add(datagridtablestyle)

这是vb.net中的代码,自己转换一下吧。。

Dim objdatagridtablestyle As New DataGridTableStyle()
        Dim objtextcol As New DataGridTextBoxColumn()
        objdatagridtablestyle.AlternatingBackColor = Color.WhiteSmoke
        objdatagridtablestyle.MappingName = "qinggou"
        objtextcol.MappingName = "nno"
        objtextcol.HeaderText = "零件编号"
        objdatagridtablestyle.GridColumnStyles.Add(objtextcol)

        objtextcol = New DataGridTextBoxColumn()
        objtextcol.MappingName = "na1"
        objtextcol.HeaderText = "零件名称"
        objdatagridtablestyle.GridColumnStyles.Add(objtextcol)
DataGrid1.TableStyles.Add(objdatagridtablestyle)

回复人: zjjszw(穿四條褲叉的蚊子) ( 四级(中级)) 信誉:100 2003-7-14 9:01:00 得分:10

直接在DataGrid中修改啊

<asp:DataGrid id="DataGrid" runat="server" Width="690px" Height="100px">
    <Columns>
        <asp:BoundColumn HeaderText="姓名" DataField="表的相關字段"></asp:BoundColumn>
    </Columns>
</asp:DataGrid>

回复人: szfly(szfly) ( 二级(初级)) 信誉:98 2003-7-14 9:03:58 得分:5

要么在执行的SQL中直接写好列名:select 要的列名=字段名 from 表名

回复人: HenanBoy(想飞的更高) ( 二级(初级)) 信誉:100 2003-7-14 10:08:57 得分:8

同意 szfly(szfly),如果没有其它的意思就用Select语句了,
如果有其他的用处 lufly2000(凌绝顶) 的方法也可以的,我以前用过的,不过比较犯

回复人: orcale(突破菜鳥極限) ( 四级(中级)) 信誉:99 2003-7-14 11:06:11 得分:2

用headertext屬性應該可以

回复人: luoxiang2000(腾空) ( 一级(初级)) 信誉:100 2003-7-14 11:48:37 得分:0

不好意思,我上面说了:

我修改了sqlDataAdapter1的selectd的commandtext语句,为
select topic as 标题 from infboard
也报错:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
原因好像是因为topic是这个表的主键,那怎么办呢?

回复人: 91bct(行人) ( 四级(中级)) 信誉:100 2003-7-14 11:53:06 得分:5

1.直接在DataGrid的属性中修改;
2.如果用SQL应该是:
select name 姓名,age 年龄 from myTable;

回复人: luoxiang2000(腾空) ( 一级(初级)) 信誉:100 2003-7-14 12:22:13 得分:0

DataGrid的属性中我没有找到能修改列名的项目?

用sql根本就不行???报错:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。

回复人: luoxiang2000(腾空) ( 一级(初级)) 信誉:100 2003-7-14 15:19:11 得分:0

我试了以下代码,也没有任何反映,也不报错:???

DataGridTableStyle ts = new DataGridTableStyle();
DataGridTextBoxColumn tbc = new DataGridTextBoxColumn();
ts.AlternatingBackColor=Color.WhiteSmoke;
ts.MappingName="infboard";
tbc.MappingName="topic";
tbc.HeaderText="标题";
ts.GridColumnStyles.Add(tbc);
this.dataGrid1.TableStyles.Add(ts);

回复人: luoxiang2000(腾空) ( 一级(初级)) 信誉:100 2003-7-20 13:03:10 得分:0

?

该问题已经结贴 ,得分记录: lufly2000 (20)、 zjjszw (10)、 szfly (5)、 HenanBoy (8)、 orcale (2)、 91bct (5)、

Contributors: FHL