关于DataGrid的一点基础东西
2006-02-10 01:43
375 查看
1、列名显示
MS让DataGrid的外观配置,包括列名的显示,全部交给了GridTableStylesCollection。
DataGridTableStyle是一个DataGridTableStyle集合,由MappingName确定唯一性。
而GridColumnStyles 属性确定其中列的具体情况,也是一个集合。
列的属性可以为DataGridBoolColumn或者DataGridTextBoxColumn,常用后者。
列同样有由MappingName确定其唯一性,在DataSet/DataTable中,与其中的ColumnName对应。
DataGridTextBoxColumn.HeaderText就是列名的显示值。
还有其他许多很有用的属性。
但是:我用Delphi的时候,从来没碰到要设置一下列名这么简单的事情竟然需要这么复杂的过程,我根本没想到去用其他的属性……
另外,不是有DataTable.Columns.Caption么?为何DataGrid死抓住ColumnName不放而不去看看Caption?
代码:
2、选择行
找到了选择行的一个好代码,利用了DataGridTextBoxColumn.TextBox.Enter属性。
主要是把选择做成了一个事件,极为方便调用,我稍微改了一下,放到了我的公用类里了(所以需要static)。
使用时直接把selectLineInit放到Form的OnLoad里面就行了:
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); }
相关文章推荐
- 虽然分了Delphi的目录,但是没有写一点关于Delphi的东西,这两天写了一些Delphi的东西,就顺便写到BLOG上吧
- 关于一点HTML的东西(2)
- php5.3中关于session的一点东西
- 关于strace的一点东西
- 关于dialog的一点东西
- 虽然分了Delphi的目录,但是没有写一点关于Delphi的东西,这两天写了一些Delphi的东西,就顺便写到BLOG上吧
- 关于SQL注入检测写一点东西
- 关于一点HTML的东西
- 一点关于ant的东西
- 一点基础的东西:Objective-C的类型和常量
- 关于Matlab绘图的一点基础小结
- 关于DataGrid 和DataSet的一点发现
- C语言基础:C语言指针(4) - 补充一点关于指针的小知识
- 记忆宝库.关于ARC的一点东西
- Redis一点基础的东西
- web基础知识(三)关于ajax,Jquery传值最基础东西
- 一点基础的东西:Objective-C的类型和常量
- 关于java对象初始化的一点有意思的东西
- 虽然分了Delphi的目录,但是没有写一点关于Delphi的东西,这两天写了一些Delphi的东西,就顺便写到BLOG上吧
- 关于操作系统的一点东西