关于DataGrid的一点基础东西

1、列名显示
MS让DataGrid的外观配置,包括列名的显示,全部交给了GridTableStylesCollection。
DataGridTableStyle是一个DataGridTableStyle集合,由MappingName确定唯一性。
而GridColumnStyles 属性确定其中列的具体情况,也是一个集合。
列的属性可以为DataGridBoolColumn或者DataGridTextBoxColumn,常用后者。
列同样有由MappingName确定其唯一性,在DataSet/DataTable中,与其中的ColumnName对应。
DataGridTextBoxColumn.HeaderText就是列名的显示值。
还有其他许多很有用的属性。
但是:我用Delphi的时候,从来没碰到要设置一下列名这么简单的事情竟然需要这么复杂的过程,我根本没想到去用其他的属性……
另外,不是有DataTable.Columns.Caption么?为何DataGrid死抓住ColumnName不放而不去看看Caption?
代码:
command = conn.CreateCommand();
command.CommandText = "Select ID, NAME,REMARK From TBL;";
command.CommandType = CommandType.Text;
DataTable table = new DataTable();
adapter = new FbDataAdapter(command);
adapter.Fill(table);

table.TableName = "TBL";        //其实table原来的TableName为空
grid.DataSource = table;
DataGridTableStyle ts = new DataGridTableStyle();
DataGridTextBoxColumn t1 = new DataGridTextBoxColumn() ,
        t2 = new DataGridTextBoxColumn() ,
        t3 = new DataGridTextBoxColumn();
ts.MappingName = table.TableName;
t1.MappingName = "ID"; t1.HeaderText = "编号";
t1.NullText = "自动编号";
t2.MappingName = "NAME"; t2.HeaderText = "名称";
t2.NullText     = "";
t3.MappingName = "REMARK"; t3.HeaderText = "备注";
t3.NullText = "";
ts.GridColumnStyles.Add(t1);
ts.GridColumnStyles.Add(t2);
ts.GridColumnStyles.Add(t3);
grid.TableStyles.Add(ts);

2、选择行
找到了选择行的一个好代码,利用了DataGridTextBoxColumn.TextBox.Enter属性。
主要是把选择做成了一个事件,极为方便调用,我稍微改了一下,放到了我的公用类里了(所以需要static)。
使用时直接把selectLineInit放到Form的OnLoad里面就行了:
public static void selectLineInit(DataGridTableStyle ts)
{
        foreach (DataGridColumnStyle dgCol in ts.GridColumnStyles)
        {
                DataGridTextBoxColumn dgtCol = dgCol as DataGridTextBoxColumn;
                dgtCol.TextBox.Enter += new EventHandler( onSelectLine);
        }
}

public static void onSelectLine( object sender, EventArgs e)
{
        Control txtContentBox = sender as Control;
        txtContentBox.Visible = false;
        DataGrid dgParent = txtContentBox.Parent as DataGrid;
        dgParent.Select(dgParent.CurrentCell.RowNumber);
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值